Windows下Nginx配置SSL实现Https访问(包含证书⽣成)
Windows下Nginx配置SSL实现Https访问(包含证书⽣成)
⾸先要说明为什么要实现https?
HTTP全名超⽂本传输协议,客户端据此获取服务器上的超⽂本内容。超⽂本内容则以HTML为主,客户端拿到HTML内容后可根据规范进⾏解析呈现。因此,HTTP主要负责的是“内容的请求和获取”。问题就出在这部分。⾏监控、劫持、阻挡等⾏为很容易导致⽹站泄密,⼀些关键参数⽐如登录密码开发者会在客户端进⾏MD5加密,不过互联⽹所承载的机密信息远不只是密码,搜索内容同样属于敏感信息。现如今,百度、⾕歌、Github等⽹站已经全站启⽤https,https就像是给⽹站上了⼀个“锁”,HTTPS做的就是给请求加密,让其对⽤户更加安全。对于⾃⾝⽽⾔除了保障⽤户利益外,还可避免本属于⾃⼰的流量被挟持,以保护⾃⾝利益。所以在我看来,终有⼀天HTTPS会实现全⽹普及。
下⾯进⼊正题。
说明:此教程适合已经配置好WNMP环境,并配置Virtualhost实现多站点的同学。如果您尚未配置,请参照我之前的⽂章进⾏配置。
实现Https⾸先需要向管理机构申请证书,⽽我们此次由于是练习⽬的,所以通过Openssl⾃⼰⽣成证书。
⾸先我们需要⽤到⽣成证书的Openssl软件。
步骤:
1. 安装Openssl
下载完成后,进⾏安装,我安装在了 C:\wnmp\OpenSSL-Win64⽂件夹中。
2. 安装ActivePerl (此软件⽬的为了解析pl⽂件,部分系统不安装也可以实现本教程的功能,安装该软件⽬的为了学习perl)。
3. 配置环境变量
在环境变量中添加环境变量
变量名: OPENSSL_HOME 变量值:C:\wnmp\OpenSSL-Win64\bin; (变量值为openssl安装位置)
在path变量结尾添加如下: %OPENSSL_HOME%;
4. ⽣成证书
(1)⾸先在 nginx安装⽬录中创建ssl⽂件夹⽤于存放证书。⽐如我的⽂件⽬录为 C:\wnmp\nginx\ssl
以管理员⾝份进⼊命令⾏模式,进⼊ssl⽂件夹。命令为:cd c:/wnmp/nginx/ssl
(2)创建私钥
在命令⾏中执⾏命令:openssl genrsa -des3 -out lee.key 1024 (lee⽂件名可以⾃定义),如下图所⽰:
输⼊密码后,再次重复输⼊确认密码。记住此密码,后⾯会⽤到。
(3)创建csr证书
在命令⾏中执⾏命令:openssl req -new -key lee.key -out lee.csr(key⽂件为刚才⽣成的⽂件,lee为⾃定义⽂件名)
如上图所⽰,执⾏上述命令后,需要输⼊信息。输⼊的信息中最重要的为 Common Name,这⾥输⼊的域名即为我们要使⽤https访问的域名。
以上步骤完成后,ssl⽂件夹内出现两个⽂件:
(4)去除密码。
在加载SSL⽀持的Nginx并使⽤上述私钥时除去必须的⼝令,否则会在启动nginx的时候需要输⼊密码。
复制lee.key并重命名为
可以使⽤此命令⾏,也可以使⽤⿏标操作copy lee.key
去除⼝令,在命令⾏中执⾏此命令:openssl rsa -in -out lee.key (lee为⾃定义⽂件名)
如下图所⽰,此命令需要输⼊刚才设置的密码。
(5)⽣成crt证书
在命令⾏中执⾏此命令:openssl x509 -req -days 365 -in lee.csr -signkey lee.key - (lee为⾃定义⽂件名)
证书⽣成完毕,ssl⽂件夹中⼀共⽣成如下4个⽂件,我们需要使⽤到的是和lee.key。
5. 修改f⽂件
f⽂件位于:C:\wnmp\nginx\conf
到该⽂件中如下代码的位置进⾏修改:
# HTTPS server
#
nginx ssl证书配置#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
修改为:
# HTTPS server
#
#modify by lee 20160907 for https -s
server {
listen 443 ssl;
server_name www.lee;
ssl_certificate C:/wnmp/nginx/;
ssl_certificate_key C:/wnmp/nginx/ssl/lee.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root C:/wnmp/lee;
index index.html index.htm index.php;
}
root C:/wnmp/lee;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
#modify by lee 20160907 for https -s
重启nginx。
(执⾏此步骤时,需要配置好Virtual Host,并且在www.lee开放⽬录中添加了index.php默认⼊⼝访问⽂件。)
上⾯的https被红⾊划线是因为我们使⽤的是⾃⼰⽣成的证书,此证书不受浏览器信任,如果想使其变为绿⾊,则需要向证书管理机构进⾏申请。
6. 添加重定向,⾃动跳转使⽤https。
在f中virtual host中如下代码位置添加⼀⾏代码:
listen 80;
server_name www.lee;
#modify by lee 20160907 for https Redirect -s
rewrite ^(.*) $server_name$1 permanent;
#modify by lee 20160907 for https Redirect -e 重启nginx。
⾄此,https访问配置成功完成。
如有不明之处,欢迎留⾔,如有错误敬请指正。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论