> ## Content Index
> Fetch the complete content index at: https://blog.k3s.9zf.net/llms.txt
> Use this file to discover other available public pages before exploring further.

# 研究了下免费的startssl,竟然成功了
- URL: https://blog.k3s.9zf.net/-e7-a0-94-e7-a9-b6-e4-ba-86-e4-b8-8b-e5-85-8d-e8-b4-b9-e7-9a-84startssl-e7-ab-9f-e7-84-b6-e6-88-90-e5-8a-9f-e4-ba-86/
- Published: 2012-11-16T11:06:51.000Z
- Updated: 2012-11-16T11:06:51.000Z
- Author: liu
- Tags: web服务器, #wordpress, #Import 2026-10-29 06:11

首先来这里申请 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](https://www.startssl.com/certs/ca.pem?ref=blog.k3s.9zf.net)证书，需要下载StartCom Root CA (PEM encoded)、你的证书等级对应的CA证书（免费的Class 1证书下载[Class 1 Intermediate Server CA](https://www.startssl.com/certs/sub.class1.server.ca.pem?ref=blog.k3s.9zf.net)）。  
在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即可，不必修改配置即可允许多个域名使用各自的证书文件。