windows下nginx+openssl实现https访问

windows下nginx+openssl实现https访问

昨天遇到这个问题,希望用https://域名 方式访问到我本地的测试环境localhost,在网上找了好些方法,按照他们的教程配置完还是无法访问,今天终于解决记录一下

1.安装nginx

下载nginx,我下载的是nginx-1.12.2版本,选择地址解压好。下载地址:nginx。

2.安装openssl

根据自己的电脑选择64/32位下载,然后选择地址安装好。下载地址:OpenSSL

3.配置环境变量

不配环境变量也是可以的,cmd进入openssl的安装目录生成证书,不过配置了环境变量方便些。添加环境变量,变量名为OPENSSL_HOME,变量值为D:\work\soft\OpenSSL-Win64\bin(OpenSLL的安装路径,指向bin目录)。
windows下nginx+openssl实现https访问_第1张图片
在环境变量path的末尾添加%OPENSSL_HOME%。
windows下nginx+openssl实现https访问_第2张图片

4.生成证书

在nginx目录下新建ssl目录
windows下nginx+openssl实现https访问_第3张图片
以管理员的身份运行cmd.exe,进入ssl文件夹。

1.创建私钥
输入命令:openssl genrsa -des3 -out test2019.key 1024(test2019是文件名,可以自定义),输入命令回车后要输入密码和验证密码(本次设置为111111),请记住这个密码,后面还会用到。
windows下nginx+openssl实现https访问_第4张图片
2.创建csr证书
输入命令:openssl req -new -key test2019.key -out test2019.csr(test2019.key是上一步生成的,test2019.csr是该步骤要生成的,如上一步用了其他文件名记得修改),输入命令回车后会有一些内容需要输入,除了Common Name需要记住,其他的都可以随便输或者不输入直接回车也是可以的
windows下nginx+openssl实现https访问_第5张图片
3.去除密码
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。输入命令:copy test201911.key test201911.key.org,在输入:openssl rsa -in test201911.key.org -out test201911.key。此时需要输入之前设置的密码
在这里插入图片描述
4.生成crt证书
输入命令:openssl x509 -req -days 365 -in test201911.csr -signkey test201911.key -out test201911.crt。
在这里插入图片描述
此时ssl目录中会有四个文件,需要用到的就是test201911.crt和test201911.key
windows下nginx+openssl实现https访问_第6张图片
接着修改conf文件夹下的nginx.conf文件,找到监听443端口的server按下面的修改


server {
        listen       443 ssl;
        
        #之前输入的域名
        server_name  www.test201911.com; 
        
		#生成的证书文件,根据自己存放的路径修改
        ssl_certificate      ./ssl/test201911.crt; 
        ssl_certificate_key  ./ssl/test201911.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;
			
			#需要重定向到哪个地址,这里是我本地项目启动后的访问地址,根据自己需要修改
            proxy_pass http://localhost:3000;
        }
    }

5.启动nginx
输入命令:start nginx.exe (如果还在之前ssl路径的先cd…退回到外层目录,如果关闭了重新打开的进入nginx解压后有nginx.exe文件的根目录即可)
这个时候去访问https://www.test201911.com 会发现依旧访问不了
windows下nginx+openssl实现https访问_第7张图片
点击详细信息会发现:DNS 名称不存在。就是说这个域名没法解析出对应的地址,所以这里我们需要设置一个本地域名解析(这种方式浏览器会提示此站点不安全。如正式环境需要外网访问,则需要去申请正式的域名和能被浏览器认证的证书,证书在腾讯云/阿里云都能申请到免费一年的证书)

6.设置本地域名解析
在C:\Windows\System32\drivers\etc中找到hosts文件,用工具打开,在末尾添加域名指向的ip地址,因为我是本地项目测试,所以指向的是localhost:127.0.0.1 www.test201911.com
windows下nginx+openssl实现https访问_第8张图片

保存后再访问https://www.test201911.com就可以了,不过会提示站点不安全,因为是自签的证书,点击详细信息,转到此网页就成功跳转了
windows下nginx+openssl实现https访问_第9张图片
windows下nginx+openssl实现https访问_第10张图片
windows下nginx+openssl实现https访问_第11张图片

你可能感兴趣的:(nginx,nginx)