Nginx使用免费StarSSL证书配置SSL安全链接

StarSSL提供了可以被绝大多数主流浏览器所接受的免费SSL证书,晚上睡不着,试了下给博客配置了SSL的安全链接,有些收获,特此记录下来分享给大家。

首先,需要在服务器上生成CSR字符串,安装OpenSSL后即可,在服务器上执行如下命令

1
2
openssl genrsa -out jayshao.com.pem 2048
openssl req -new -key jayshao.com.pem -out jayshao.com.csr

第一个命令生成了2048位加密的网站证书的key文件,第二个命令根据这个key文件来生成对应的CSR文件,其中第二步会有一些需要设置的地方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Country Name (2 letter code) [AU]:CN
//输入国家简写
State or Province Name (full name) [Some-State]:Zhejiang
//省市
Locality Name (eg, city) []:Hangzhou
//城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Jayshao
//组织名称或公司名称
Organizational Unit Name (eg, section) []:
//可以不用填
Common Name (eg, YOUR name) []:jayshao.com
//输入要配置ssl的域名,如jayshao.com,注意jayshao.com和www.jayshao.com属于不同的域名。
Email Address []:admin@jayshao.com
//输入邮箱
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:
//可以不用填
An optional company name []:
//可以不用填

生成CSR文件后,去Starssl网站的Verification Wizard申请证书认证,如果没有用户的话,可以注册一个,大约几个小时就能认证通过(人工审核,最好使用真实的信息),需要注意的是,审核以后必须首先验证一下你的域名,然后才能对这个域名进行证书认证。 认证完毕后,会给你一长串字符串,—–BEGIN CERTIFICATE—–开头,—–END CERTIFICATE—–结尾,将这个字符串保存为SSL.crt文件

将开始生成的jayshao.com.pem和ssl.crt一起放到服务器的某个目录下,例如/wp-content/local/ssl。然后打开nginx的配置文件nginx.conf,添加如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 443;
server_name jayshao.com;
index index.html index.htm index.php;
root /home/wwwroot/;
ssl on;
ssl_certificate /wp-content/local/ssl/ssl.crt;
ssl_certificate_key /wp-content/local/ssl/jayshao.com.pem;
location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param HTTPS on;
include fcgi.conf;
}
access_log off;
include wordpress.conf;
}

检查无误后,重启nginx服务器,打开https://jayshao.com,是不是成功了呢?