申请SSL证书及Nginx支持HTTPS
申请SSL证书
每年2.5$ 的SSL证书申请地址在这里: https://billing.centriohost.com/cart.php?a=add&pid=21
打开后看到原价是10$/年,域名使用泛域名: *.imxylz.com,服务器IP地址需要提供公网IP地址。邮件的前缀可以选择一个,后缀是域名地址。 当然需要一个2048位的CSR。
生成一个CSR私钥,可以使用下面的名称:
#openssl genrsa -out imxylz.com.pem 2048
#openssl req -new -key imxylz.com.pem -out imxylz.com.csr
需要注意的是生成csr最好不输入密码,否则某些web服务器(例如apache)启动时需要输入密码。 另外CN (Common Name is a Necessary Item) 应该是 *.imxylz.com,否则会被拒绝。 (我在这个地方折腾好久,最后发ticket更换csr才解决)。
然后在下一页付款是输入优惠码 LET2SSL ,即可优惠7.5$,这样就只剩下2.5$/年了。 以后每年续费也按照这个价格进行。
付款完成后系统会发送邮件给第一步选择的邮箱地址: 前缀@imxylz.com,例如我的是: admin@imxylz.com
特别注意的是:由于邮件会发送给admin@imxylz.com,因此需要提前准备好邮件服务器,例如我当时就安装了postfix又来接收邮件。
由于pop3没有安装成功,因此我将收到的邮件 /root/Maildir/new/xxxxxx 下载回来,改成.eml后缀文件用OS X的Mail打开的。 邮件中有一个链接地址,需要确认信息是否正确,确认即可。(如果不确认及意味着操作失败,不能进行以后的操作了)。
比较悲剧的是我当时将邮件服务器搞坏了,没有收到邮件,最后只好发送ticket请求重发。 好在工作人员非常厚道,将证书发送给admin@imxylz.com以及我的gmail邮箱。 正常应该不发送给非域名邮箱的。
再次表扬下centriohost网站的工作人员,对ticket的处理比较及时。不爽的地方在于注册的时候会将密码明文发送到注册邮箱中。
Nginx 安装证书
邮件中有两个证书,一个是域名证书,一个是根证书。 将两个证书合并成一个文本文件(包括注释) imxylz.com.crt。 (注意域名证书在上,根证书在下,否则nginx启动会报错误。)
现在我们需要两个文件: imxylz.com.pem以及imxylz.com.crt。
- 编译Nginx
如果nginx没有支持SSL,则需要重新编译。可通过 nginx -V 来检查是否支持SSL。
#./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
#make
#make install
- 配置证书
将证书拷贝到/usr/local/nginx/conf中,然后配置(/usr/local/nginx/conf/nginx.conf)如下:
server {
listen 443;
server_name imxylz.com;
index index.html;
ssl on;
ssl_certificate /usr/local/nginx/conf/imxylz.com.crt;
ssl_certificate_key /usr/local/nginx/conf/imxylz.com.pem;
location / {
root /data/imxylz.com/public;
}
}
测试下nginx并运行。
#/usr/local/nginx/sbin/nginx -t
#/usr/local/nginx/sbin/nginx
现在就可以通过 https://imxylz.com 访问HTTPS服务了。 当然如果网站有非https的资源,就需要改造地址,否则Windows下浏览器会弹出警告。 例如:
dsq.src = '//' + disqus_shortname + '.disqus.com/' + disqus_script;
<link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
最终的效果图如下:
如果有问题,可以检查nginx的error_log。