Nginx 安装ssl证书

SSL证书

首先说下https也就是ssl证书,一般我们认为https是安全的,但是SSL 证书的信用链体系并不安全。特别是在某些国家(咳咳,你们懂的)可以控制 CA 根证书的情况下,中间人攻击一样可行。另外,在客户端被植入无数后门、木马的状况下,HTTPS 连接的作用非常有限。

好了,我们可以开始配置ssl了。一般来说我比较推荐namecheap的ssl证书,因为比较便宜,毕竟对大部分个人博客来说只是想要那个绿锁提升逼格罢了~现在Let’s Encript免费证书已经开发,十分推荐使用,可以参考我写的文章

使用OpenSSL生成证书

执行

cd /usr/local/nginx/conf/
openssl genrsa -out yourdomain.pem 2048

会有如下输出

Generating RSA private key, 2048 bit long modulus
........+++
................................................................................................................+++
e is 65537 (0x10001)

生成证书

openssl req -new -key yourdomain.pem -out yourdomain.csr

会出现以下提示

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----

按照提示输入相应信息即可

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:Bigfa
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:yourdomain.com  
Email Address []:admin@yourdomain.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

执行cat yourdomain.csr

-----BEGIN CERTIFICATE REQUEST-----
MIICxDCCAawCAQAwfzELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAO
BgNVBAcMB0JlaWppbmcxDjAMBgNVBAoMBUJpZ2ZhMRcwFQYDVQQDDA55b3VyZG9t
YWluLmNvbTEjMCEGCSqGSIb3DQEJARYUYWRtaW5AeW91cmRvbWFpbi5jb20wggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9fsxThwLzCd54s2GMUcjlleCj
LTf9bYGQyIjn+6z7kJbDbcrkbZxMysfRnFLa6u5oK7S9PQfGHK/gZeHfSLXbD/GL
wi171tZpnQHjfLjMbHEUEUCFQD7ueek/v3/Tr+T0+em1gQt/93K2dqv7Cx+bupwc
zNkQmqNgqslC4sdKQZjLUIHYLr/j8lQQLOOn9/PiuNOGCTaK5g9TA20oVCjpJZuf
1eN7jYUOtvy4IGhq4BkNJHHmg32cxH9mZOgmhohq+pbmi0PP8E2OFTzpyZ6OcFtW
IcSRq3UpjPw8EYfEg4lDC0Xee2Yom7Is8yBWAPcNKxpvFphlHirHOF6xifRzAgMB
AAGgADANBgkqhkiG9w0BAQUFAAOCAQEAN9OnT8J1VnO74bXbJS9ub7DGf94klpoy
YQWePKelnImU1Zszdg3jYtKWZVcNYhM5QfZ16CDKwYEQeQkgy1xSBKkwpY24ICe+
iX1sczvBY/gUq+xNArL5La7/Tow3KrJZJuFc1iVESBG0wU8zu9ZcnwbuRj0Dn8qj
fMqwwct+0Xz2zXxiqtVCPNQXqa/YRANGnFnBBPErBnaL/j439s4TBasSiIyb7TE+
Ku9LrfecL5w8+05NFPcG1ArpbQJDuJIIAk1itTMLEMGqUYWD6MYcksH4FcTr70Vw
f8Ag9+Csyf5aQxQVgNDCgc3zwHTg0Bpbldx8+HiCiDXjaK4qAXKBRQ==
-----END CERTIFICATE REQUEST-----

把—–BEGIN CERTIFICATE REQUEST—–开头到—–END CERTIFICATE REQUEST—–结尾的全部内容复制下来。

NameCheap生成数字证书

进入Namecheap管理界面,点击“Activate Now”即可激活SSL产品。

之后会出现一个提交证书向CA(数字证书颁发机构)提交OpenSSL生成的证书的页面,把前面复制的内容粘贴进去,系统选择nginx。

接下来是选择域名管理员邮箱,邮箱必须是能够接收到邮件。同时确认一下生成证书时填写的信息是否正确。这个邮箱我表示太他妈坑了,前面几个是域名邮箱,后面那个是whois邮箱,如果选择whois邮箱会转发到你的联系邮箱。最好还是使用配置的域名邮箱,比较方便,如果没收到的话查看一下自己的垃圾邮件。

之后提交订单即可。

过段时间会收到一封验证邮件,点击邮件中的验证地址并并填写验证码即可。

过段时间邮箱就会收到发来的证书,下载附件的压缩包解压,里面好像有4个文件,我们最终使用的是yourdomain.crt。

在上传到服务器之前要把第二个和第三个的内容放到yourdomain.crt中,第一个不需要使用。完成后把yourdomain.crt上传到你的服务器中

Nginx虚拟主机设置SSL

ssl是443端口,注意证书路径。

server
	{
		listen 443 ;
		server_name fatesinger.com;
		ssl on;
		ssl_certificate /usr/local/nginx/conf/yourdomain.crt;
		ssl_certificate_key /usr/local/nginx/conf/yourdomain.pem;
		index index.html index.htm index.php default.html default.htm default.php;
		root  /home/wwwroot/fatesinger.com;
		access_log  /home/wwwlogs/fatesinger.com.log  access;
	}

全站https跳转

if ($server_port = 80) {
    return 301 https://$server_name$request_uri;
}
if ($scheme = http) {
    return 301 https://$server_name$request_uri;
}
error_page 497 https://$server_name$request_uri;

更详细的配置可以参考

Comments : 0

发表留言

Smilies powered by wp-alu

Post Comment