window系统创建自签名SSL证书进行https加密域名访问

时间:2021-09-16
本文章向大家介绍window系统创建自签名SSL证书进行https加密域名访问,主要包括window系统创建自签名SSL证书进行https加密域名访问使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

应用场景

公众号只配置了https的url地址,用Nginx做反向代理时被服务拦截提示“此网站无法提供安全连接”

tips:

  1. 公众号后台路径区分http和https
  2. hosts文件和nginx配置在没有SSL证书的情况下,无法代理https流量,所以需要申请自签名证书

OpenSSL
github地址

https://github.com/openssl/openssl

官方文档

https://www.openssl.org/

快捷安装包地址

http://slproweb.com/products/Win32OpenSSL.html

下载window exe安装包

安装OpenSSL

同意,并下一步

记住安装的文件夹路径,待会会用到

下一步

下一步

下一步

下一步

下一步

安装成功

生成SSL

打开安装OpenSSL的文件夹,进入bin目录

以管理员身份打开openssl.exe文件

tips:

  如果这个地方打不开,设置环境变量,如果能正常打开则下面的所有命令都不用加openssl。

      设置环境变量,例如工具安装在C:\OpenSSL-Win64,则将C:\OpenSSL-Win64\bin;复制到Path中

打开命令行程序cmd(以管理员身份运行),运行以下命令:

    openssl genrsa -des3 -out server.key 2048

回车,再依次输入2次密码,直接输入123465就行

完成后自动生成server.key文件

继续使用key自签名生成csr文件

输入以下命令

  openssl req -new -key server.key -out server.csr

注意,会先输入密码,在输入其他信息,最后再输入密码

参数说明

Country Name (2 letter code) [AU]:CN #国家
State or Province Name (full name) [Some-State]:Beijing #省
Locality Name (eg, city) []:Beijing #市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ncda #公司
Organizational Unit Name (eg, section) []:IT #部门
Common Name (e.g. server FQDN or YOUR name) []:localhost #域名 这里需要输入服务器的域名
Email Address []:kong.weisheng@nidec.com #邮箱

 到这里就生成了server.csr文件

删除密码
为了避免每次启动服务器都要输入SSL密码,在这里生成一个不需要密码的key

输入以下命令

openssl rsa -in server.key -out server_no_passwd.key

输入之前设置的密码确认即可

继续生成自签名文件

openssl x509 -req -days 36500 -in server.csr -signkey server_no_passwd.key -out server.crt

到这里就可以了

双击server.crt安装证书

设置hosts

开启nginx

#user  nobody;
worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    # 代理测试环境
    server {
        listen 80;
        server_name test.com;
        location / {
            # root html;
            # index index.html index.htm;
            proxy_set_header host $host;
            proxy_pass http://127.0.0.1:8095;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
     # test
    server {
        listen 443;
        # test
        server_name test.com;
        ssl on;
        # root html
        # index index.html index.htm;
        # SSL证书放在了同级目录small文件夹下面
        ssl_certificate cert/test/server.crt;
        ssl_certificate_key cert/test/server_no_passwd.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
            # 指向当前的某个服务端口
            proxy_pass http://127.0.0.1:8095;
            #设置请求头,并将头信息传递给服务器端
            proxy_set_header Host $host;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
 

访问https://test.com

继续前往,虽然没有小绿锁,但是能正常访问并获取数据

END.

原文地址:https://www.cnblogs.com/yoo104/p/15292890.html