首先来这里申请 https://www.startssl.com/
忘记点哪里了,反正让你填电话和地址就对了,第一次地址写的不清楚,又来了邮件让回复详细地址,然后我回复了,结果一会就验证通过了
I am in China, personal address: Shandong province Linyi City West Miao Zhuang No. 1537, my name is Liucheng.
大体流程引用一网友的
1.注册用户,需要填写你的姓名, 住址,邮箱等信息。住址越详细越好,邮箱一定是好用的。
我注册时因为地址写的不详细,StartSSL给我发了两次邮件询问详细住址。直到我写到几号楼,几单元几室才满意。
但是对方动作很快,我提交后马上给我邮件确认住址,我提供了详细住址后马上将激活链接发给了我。
2.注册完账户后要认证你的域名,一般选择邮件认证。同样会发一个验证邮件。
3.然后就可以做证书了。
做证书的步骤:
1.生成私钥。 此时必须填写一个足够长的密码,然后会返回一个生成好的私钥。
2.选择域名,选择你刚才添加的那个根域名。
3.填写要做证书的二级域名
4.生成证书,将证书拷贝保存为ssl.crt文件。
5.返回Tool Box,选择Decrypt Private Key,将刚才生成的私钥解密。填写刚才生成的私钥和密码,会得到一个解密的私钥,保存为ssl.key文件。如果不解密的话,每次启动Nginx都要输入密码。。。
6.将crt文件和key文件上传到VPS。我上传到的目录和vhost同级,大家可根据自己的喜好。
7.为证书附加StartSSL的根域。我没测试不附加的话会有什么后果,根据网上教程说,不附加的话会有部分浏览器不认可,附加呗。
wget http://cert.startssl.com/certs/ca.pem
cat ca.pem >> ssl.crt(其实这里直接用记事本打开添加也行,用命令的话就得打开分隔开)
—–END CERTIFICATE———-BEGIN CERTIFICATE—–
在中间断开他,成为
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
然后nginx的配置文件里添加
ssl on;
ssl_certificate /usr/local/nginx/conf/cert/ssl.crt;
ssl_certificate_key /usr/local/nginx/conf/cert/ssl.key;
ssl_session_timeout 15m;ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
(这里根据具体存放路径放,注意端口改成443,至于http跳转到https的方法就自己去网上搜索了,让论坛里的一些网友看了下,貌似就FF不认,不知道什么原因)
貌似FF不信任,搜索了下要用根证书,合并一下(貌似就是把里面的内容复制出来放到ssl.crt里)
首先你需要在StartSSL的控制板的Tool Box->StartCom CA Certificates中下载StartCom CA证书,需要下载StartCom Root CA (PEM encoded)、你的证书等级对应的CA证书(免费的Class 1证书下载Class 1 Intermediate Server CA)。
在apache下需要SSLCertificateChainFile用来指定CA根证书位置
DocumentRoot /var/www/yourdomain.com
ServerName yourdomain.com
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/yourdomain.crt
SSLCertificateKeyFile /etc/apache2/ssl/yourdomain.key
SSLCertificateChainFile /etc/apache2/ssl/startssl.chain.class1.server.crt
以下未验证,原文地址:http://blog.zhujinliang.com/html/2012/185.html
配置后发现,如果对同一个IP绑定多个域名的情况,使用不同的SSL证书会造成混乱。
在这找到了答案:http://xfeng.me/nginx-enable-tls-sni-support/
Nginx需要开启TLS SNI support
下面拷贝一下主要步骤
首先停止Nginx。。。
1.确认是否开启TLS SNI support
1
/usr/local/nginx/sbin/nginx -V
如果为TLS SNI support disable,则没有开启,需要重新编译Nginx。
正好我使用的也是LNMP0.8,照着文章说的做就可以了。
2.下载openssl包
定位到/root/lnmp0.8/,也就是安装LNMP时解压出来的位置
1
wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz
2
tar zxvf openssl-1.0.0d.tar.gz
3.编译。进入nginx文件夹,根据版本不同可能文件夹名不同
view sourceprint?
01
./configure –user=www –group=www –prefix=/usr/local/nginx \
02
–with-http_stub_status_module \
03
–with-http_ssl_module \
04
–with-http_gzip_static_module \
05
–with-ipv6 \
06
–with-openssl=../openssl-1.0.0d/
07
make
08
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
09
cp objs/nginx /usr/local/nginx/sbin/nginx
10
/usr/local/nginx/sbin/nginx -t
11
make upgrade
4.最后再查看一下,确认是否已开启
重新开启Nginx即可,不必修改配置即可允许多个域名使用各自的证书文件。
0 条评论