技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
服务器技术
操作系统
网站运营

分类目录

热门标签

赞助商

搜索

使用OpenSSL为Nginx配置HTTPS证书

作者:admin    时间:2017-4-5 12:3:17    浏览:

OpenSSL官方推荐win32可执行文件版下载:

 OpenSSL

一、证书制作

1、制作CA证书:

ca.key CA私钥:

openssl genrsa -des3 -out ca.key 2048

制作解密后的CA私钥(一般无此必要):

openssl rsa -in ca.key -out ca_decrypted.key

ca.crt CA根证书(公钥):

openssl req -new -x509 -days 7305 -key ca.key -out ca.crt

2、制作生成网站的证书并用CA签名认证

在这里,假设网站域名为www.webkaka.com

生成www.webkaka.com证书私钥:

openssl genrsa -des3 -out www.webkaka.com.pem 1024

制作解密后的www.webkaka.com证书私钥:

openssl rsa -in www.webkaka.com.pem -out www.webkaka.com.key

生成签名请求:

openssl req -new -key www.webkaka.com.pem -out www.webkaka.com.csr

在common name中填入网站域名,如www.webkaka.com即可生成改站点的证书,同时也可以使用泛域名如*.webkaka.com来生成所有二级域名可用的网站证书。

用CA进行签名:

openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in www.webkaka.com.csr -out www.webkaka.com.crt

其中,policy参数允许签名的CA和网站证书可以有不同的国家、地名等信息,days参数则是签名时限。

如果在执行签名命令时,出现“I am unable to access the ../../CA/newcerts directory

修改 /etc/pki/tls/openssl.cnf 中“dir = ./CA

然后:

mkdir -p CA/newcerts

touch CA/index.txt

touch CA/serial

echo "01" > CA/serial

再重新执行签名命令。

最后,把ca.crt的内容粘贴到www.webkaka.com.crt后面。这个比较重要!因为不这样做,可能会有某些浏览器不支持。

好了,现在https需要到的网站私钥www.webkaka.com.key和网站证书www.webkaka.com.crt都准备完毕。接下来开始配置服务端。

二、配置Nginx服务器

新开一个虚拟主机,并在server{}段中设置:

listen 443;

ssl on;

ssl_certificate /path/to/www.webkaka.com.crt;

ssl_certificate_key /path/to/www.webkaka.com.key;

其中的路径是刚刚生成的网站证书的路径。

然后使用一下命令检测配置和重新加载nginx:

    检测配置:

nginx -t

    重新加载:

nginx -s reload

三、优化nginx配置

1、优化nginx性能

http{}中加入:

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

据官方文档所述,cache中的1m可以存放4000个session。

在配置https的虚拟主机server{}中加入:

keepalive_timeout 70;

2、有时在phpMyAdmin等程序登入后会错误地跳转http的问题。

解决方法是定位至 “location ~ .*\.(php|php5)?${}” 在include fcgi.conf;或者在fastcgi_param配置后面加上:

fastcgi_param HTTPS on;

fastcgi_param HTTP_SCHEME https;

在这里是nginx官方的关于https的文档:

 https文档

可以作为参考。

=====================================

本文文章来源是:http://blog.creke.net/762.html,经网友测试证实方法可用,有疑问可到博主网页上交流。如下为部分网友的反馈。

 

 

=====================================

您可能对以下文章也感兴趣

标签: nginx  https  linux技术