SSL证书与HTTPS应用部署小结(3)

因为CDN的云文件提供者,一般为每个cdn用户创建一个单独的子域名来使用,这样的话,CDN提供者要想支持 https 就必须支持所有可能的子域名,因此要求CDN提��方使用那种通配符子域名的证书。

 

相对 URL、绝对 URL 与 只缺协议的URL(Protocol Relative URL)

相对路径比较简单,自动匹配用户请求的 http 或 https 协议。

 

但是绝对 url 则不成,因为绝对 url 已经明确地写上了协议: 。

这个问题还有一个办法解决,你一定没见过这种形式: //www.example.com/jquery.js

哈哈,一个缺少协议的URL(实际上还算是相对URL),这种形式可以在浏览器中被正确补充上合适的协议!很多人都用这种方法。

但是,这里有点小问题,IE7 和 IE8 处理这种缺少协议的URL的css 文件时,同一个css文件会下载两次,详见Steve的文章 。

 

JS 自动判断当前协议

现在我们经常用 js 来加载其它 js 文件或 其它别的文件,如果是请求是相对URL则没问题,如果是绝对URL怎么办?

其实 js 脚本可以这样:document.location.protocol 等于 'http:' 还是 'https:' 来判断。例如在 Google Analytics 的嵌入代码中:

ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';

 

应用程序中如何判断访问协议

对于动态页面,如 jsp、php等,也是可以动态判断当前是否使用了 https 协议的。所以应用可以根据动态判断,来生成不同的引用 URL。这样虽然有点麻烦,但也算是解决了自动识别协议的问题,当然相对路径总是不需要处理的。

比如在 jsp 中:

request.isSecure() 为true 表示当前为 https ,false表示 http 访问

request.getScheme() 返回字符串 https 或 http

注意,如果 tomcat 部署在其它web服务器代理的后面,需要正确配置好才能返回正确结果,见本文最后一部分。

 

同源策略的问题

最后提醒一点:http 和 https是不同源的!即使后面的内容都一样。所以 ajax 发请求的时候要使用正确协议的绝对URL才行。

相对URL的 ajax 请求没关系。

Nginx 配置

小结一下 Nginx 配置SSL注意的问题,详细安装配置内容请参考其它资料,如官方 SSL模块 和 https配置文档

1. 首先检查一下是否已安装了 SSL模块,因为默认是不包含的。

用 nginx -V 命令检查一下。如果没有ssl模块则需要重新安装(建议升级到最新版本),注意安装时加上ssl 选项:

./configure --with-http_ssl_module

另外,nginx需要依赖 openssl 提供ssl支持,这个也要有。

2. nginx.conf 中的典型配置示例

listen     80;

listen    443 ssl;

ssl_certificate      cert.pem; #修改具体文件

ssl_certificate_key  ssl.key; #修改具体文件

 

ssl_session_cache    shared:SSL:10m;

ssl_session_timeout  10m;

 

ssl_protocols  SSLv2 SSLv3 TLSv1;

ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers   on;

上面第2-4项是关键。这些配置放在 server 块就可以对其中的所有 location 生效了,并且同时支持 http 和 https 。或者把 http 和 https 分开配置也很常见。

3. 合并证书配置文件

和Apache配置不同,Nginx需要将服务器证书和ca证书链合并到一个文件中,作为 ssl_certificate 配置的内容。

例如,按照证书链从下向上的顺序,我有三个证书:

ssl.crt(自己域名的服务器证书)

sub.class1.server.ca.pem(startssl 的一类证书)

ca.pem(startssl 的根证书)

把它们的内容按顺序连接到的一个文件中,每个内容另起一行,中间没有空行或空格。

4. 避免启动时输入密码

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e7868b49397be33faf337e6c7dfb0efc.html