nginx https OpenSSL本地配置 https 协议

前言

今天突然想到有一个项目的 bug, 好像是因为 https 协议造成的,所以就试着在本机上配置 nginx 的 https, 所以就开始搞了。因为之前了解过 https 需要证书,所以第一个问题就是解决证书从哪里获得,经过各种摸索,发现 OpenSSL 可以生成自签名的证书。第二个问题就是 nginx 的项目配置文件该怎么写。于是就查阅了 nginx 的官方文档, 于是问题就迎刃而解了。


实验环境

系统:windows 10
虚拟容器:docker


实现步骤

  1. 使用 OpenSSL 生成证书和密钥

    创建密钥

    openssl genrsa -des3 -out server.key 2048 # 使用 openssl 工具生成一个 RSA 私钥
    

    生成证书签名请求(csr)

    openssl req -new -key server.key -out server.csr # 需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
    

    删除密钥中的密码

    openssl rsa -in server.key -out server.key #如果不删除密码,在应用加载的时候会出现输入密码进行验证的情况,不方便自动化部署
    

    生成自签名证书

    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt # 内部或者测试使用,只要忽略证书提醒就可以了。
    

    生成pem格式的公钥

    openssl x509 -in server.crt -out server.pem -outform PEM # 有些服务,需要有pem格式的证书才能正常加载,可以用下面的命令:
    

    总结
    自签名的证书,不被浏览器信任,适合内部或者测试使用。生产环境请大家积极去购买

  2. 编写 nginx 中项目的配置文件
    server {
         listen       8091 ssl;
         listen  [::]:8091 ssl;
         server_name  localhost;
    
         #charset koi8-r;
         #access_log  /var/log/nginx/host.access.log  main;
    
         ssl_certificate /usr/local/server.pem;
         ssl_certificate_key /usr/local/server.key;
         ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
         ssl_session_cache shared:SSL:1m;
         ssl_session_timeout 5m;
         ssl_protocols SSLv2 SSLv3 TLSv1.2;
         ssl_prefer_server_ciphers on;
    
    
         # location / {
         #     root   /usr/share/nginx/html;
         #     index  index.html index.htm;
         # }
         location / {
             root   /usr/local/dist;
             index  index.html index.htm;
         }
    
         #error_page  404              /404.html;
    
         # redirect server error pages to the static page /50x.html
         #
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   /usr/share/nginx/html;
         }
    
         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
         #
         #location ~ \.php$ {
         #    proxy_pass   http://127.0.0.1;
         #}
    
         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
         #
         #location ~ \.php$ {
         #    root           html;
         #    fastcgi_pass   127.0.0.1:9000;
         #    fastcgi_index  index.php;
         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
         #    include        fastcgi_params;
         #}
    
         # deny access to .htaccess files, if Apache's document root
         # concurs with nginx's one
         #
         #location ~ /\.ht {
         #    deny  all;
         #}
     }
    
  3. 重新加载 nginx 的资源
    nginx -s reload
    

效果

https

参考文献

nginx 官网

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高建伟-joe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值