2016-10-28 转载请注明出处:http://daodaoliang.com/

作者: daodaoliang
版本: V1.0.1
邮箱: daodaoliang@yeah.net

参考链接: 这里 和 这里 和 官方文档

1. 制作服务器证书

服务器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.example.com

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

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

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

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

生成签名请求:

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

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

用CA进行签名:

openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in www.example.com.csr -out www.example.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.example.com.crt 后面。这个比较重要!因为不这样做,可能会有某些浏览器不支持。

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

3. 配置nginx

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

listen 443;

ssl on;

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

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

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

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

检测配置:
nginx -t
重新加载:
nginx -s reload

4. 优化nginx配置

https和http共存:

server {
listen 80;
listen 443 ssl;
server_name zou.lu;
root /var/www/html; #ssl on; //这行必须要注释掉
ssl_certificate /usr/local/nginx/conf/zou_lu.crt;
ssl_certificate_key /usr/local/nginx/conf/zoulukey.pem;
}

优化性能:

在http{}中加入:

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

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

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

keepalive_timeout 70;

PS:常见错误:

有时候,会发现,在phpMyAdmin等程序登入后会错误地跳转http的问题。解决方法是定位至“location ~ .*.(php php5)?${}”在include fcgi.conf;或者在fastcgi_param配置后面加上:
fastcgi_param HTTPS on;

fastcgi_param HTTP_SCHEME https;

http://daodaoliang.com/blog/2016/10/28/nginx%E9%85%8D%E7%BD%AEhttps%E5%B9%B6%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6.html

nginx 配置https并自签名证书的更多相关文章

  1. 为nginx配置https并自签名证书

    一.把证书准备好. 步骤与使用OpenSSL自签发服务器https证书所述大同小异.在这里再重复一次. 1.制作CA证书: ca.key CA私钥: openssl genrsa -des3 -out ...

  2. nginx配置https转发到tomcat(使用自签名的证书)

    一.使用openSSL生成自签名的证书 1.生成RSA私钥 命令:openssl genrsa -des3 -out server.key 1024 说明:生成rsa私钥,des3算法,1024强度, ...

  3. nginx配置https及Android客户端访问自签名证书

    前一篇随笔通过keytool生成keystore并为tomcat配置https,这篇随笔记录如何给nginx配置https.如果nginx已配置https,则tomcat就不需要再配置https了.通 ...

  4. nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...

  5. 购买https证书以及nginx配置https

    文章来源 运维公会:购买https证书以及nginx配置https 1.https的作用 https的全名是安全超文本传输协议,是在http的基础上增加了ssl加密协议.在信息传输的过程中,信息有可能 ...

  6. 【Nginx(五)】Nginx配置Https证书

    大致的流程如下 1.申请Https证书,绑定域名信息; 由于自己的服务器是腾讯云服务器, 这里就在腾讯云上申请SSL证书, 申请地址: https://console.cloud.tencent.co ...

  7. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  8. lnmp之Nginx配置https加密访问

    配置lnmp之Nginx网站支持https加密访问 注: 1. 这里拿购买的(pxsnx.pxjy.com)证书来做样例 证书文件共有三个---> (pxsnxg.pxjy.com_ca.crt ...

  9. Nginx 配置https 服务

    一.HTTPS 服务 为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 HTTPS加密校验 ...

随机推荐

  1. hbase 2.0.2 增删改查

    package cn.hbase.demo; import java.io.IOException; import java.util.Iterator; import org.apache.hado ...

  2. Power control within a coherent multi-processing system

    Within a multi-processing system including a plurality of processor cores 4, 6operating in accordanc ...

  3. TensorFlow 实战(四)—— tensor 的认识

    tensorflow,即是 tensor flows,在 computation graph 中 flows(流动)的不是别人,正是 tensor: 1. tensor 基本属性 tensor 的名字 ...

  4. vue sourcemap详解

    从webpack开始 直接进入正题.有人觉得vue项目难调试,是因为用了webpack.所有代码揉在了一起,还加了很多框架代码,根本不知道怎么下手.所以vue+webpack调试要从webpack入手 ...

  5. 解决android模拟器无法上网问题

    1.  将 android的tool增加到,windows 环境变量 path中, D:\Android\android-sdk_r3-windows\android-sdk-windows\tool ...

  6. JScript实现将指定目录下的vc工程加到解决方案

    作者:朱金灿 来源:http://blog.csdn.net/clever101 main(); function main() { try { var WSShell = WScript.Creat ...

  7. 《冰球撞击》Android休闲桌球类游戏现已面试,快来下载吧!

    <冰球撞击>Android休闲桌球类游戏现已完工上市快来下载吧! http://pan.baidu.com/s/1dD9vIRv <冰球撞击>是一个类似玩投篮机操作方式的And ...

  8. 为 Mac Finder 增加右键文件打包压缩(免费)

    在 Windows 上用惯了 7-Zip 和 WinRAR,来到 Mac 却突然发现没有类似的工具?Mac 自带的 Zip 工具确实让人吐糟无力,压缩率低就不说了,因为 Mac 上文件名是 Unico ...

  9. Android官方教程翻译(5)——设置ActionBar

    Setting Up the Action Bar 设置Action Bar PREVIOUSNEXT THIS LESSONTEACHES YOU TO 这节课教你 1.    Support An ...

  10. WPF MVVM系列文章

    网上搜到了MSDN Magazine上Laurent Bugnion的系列文章. 以下为关于WPF的优秀实践,很有必要阅读. 很吸引人的标题有: IOC Containers and MVVM Mes ...