{% if theme.baidu_site_verification %} {% endif %}

用Openssl生成可靠的CA证书使网址http变https


前言

     项目的访问首页,原来做的是http访问,现在要https也能访问。看似好像就添加个“s”,实际上搞起来还是费点事。大概2年前买了云服务器的时候,做过类的的,但那个时候是云服务器,证书什么的厂家提供,再加上时间也过去很久,很多东西都忘了。

OpenSSL生成证书

 公司这边当时提供了cfssl的证书生成文档,但官网不好找,用linux下载安装包还特别慢。好不容易下载上,对服务器证书签名又出现问题。无奈之下最后改用OpenSSL,因为搜寻b站找资料,看到有up主用到这个工具,讲的还不错。就改用这个。算是踩坑了吧。

下载OpenSSL

https://slproweb.com/products.html 这是官网下载地址, 有linux和win两个版本,我下载的win版本

安装OpenSSL

windows安装直接无脑默认下一步,我的默认安装路径是(C:\Program Files\OpenSSL-Win64\bin)

在Win生成证书

在OpenSSL默认路径bin目录下cmd,输入以下命令,c盘dev文件夹生成对应文件

//生成私钥.key
openssl genrsa -des3 -out c:/dev/server.key
//由私钥创建待签名证书
openssl.exe req -new -key c:/dev/server.key -out c:/dev/pub.csr

创建一个CA机构

//生成CA私钥
openssl.exe genrsa -out c:/dev/myca.key 2048
//生成CA代签名证书
openssl.exe req -new -key c:/dev/myca.key -out c:/dev/myca.csr
//生成CA根证书
openssl.exe x509 -req -in c:/dev/myca.csr -extensions v3_ca -signkey c:/dev/myca.key -out c:/dev/myca.crt
//对服务器证书签名
openssl x509 -days 365 -req -in c:/dev/pub.csr -extensions v3_req -CAkey c:/dev/myca.key -CA c:/dev/myca.crt -CAcreateserial -out c:/dev/server.crt

参考资料:

https://www.bilibili.com/video/BV16x4y1u7T4/?spm_id_from=333.788&vd_source=7a3d5cd3fa11ce74c3a55924dc40fe84

Nginx配置

在nginx配置文件:nginx.conf加入下面配置

# https 服务配置
    server {
        listen 443 default ssl;
        ssl on;
        ssl_certificate      /opt/cert/server.crt;
        ssl_certificate_key  /opt/cert/server.key;
        server_name localhost;
        location / {
            root   /usr/local/nginx/html/dist;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
            
        }
        location /prod-api/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:8080/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
    }

添加SSL支持

https://blog.csdn.net/H900302/article/details/120825981

这篇博客讲的细节很到位!

查日志看出问题

 但在这里有一个很恶心的bug,那就是上面配置文件没有问题,但报错nginx访问404,notfound。然后我就一直百度,反复改配置文件的内容,一直以为配置文件出问题,改了配置文件很多地方没有解决。直到最后查了一下nginx的error.log日志文件,发现访问路径似曾相识。”/home/ruoyi/projects/static-web/index.html”,这个路径不是和ruoyi官网默认的路径很相似?于是按照网站的操作:通过make模板进行编译,新的nginx文件覆盖旧的文件,然后重启奇迹出现,访问成功!这里覆盖旧文件的底层原理我不清楚,但真的坑啊。

2024/03/24 21:25:08 [error] 17506#0: *371 "/home/ruoyi/projects/static-web/index.html" is not found (2: No such file or directory), client: 192.168.10.212, server: localhost, request: "GET / HTTP/1.1", host: "192.168.10.195"
2024/03/24 21:32:54 [error] 17506#0: *375 "/home/ruoyi/projects/static-web/index.html" is not found (2: No such file or directory), client: 192.168.10.212, server: localhost, request: "GET / HTTP/1.1", host: "192.168.10.195"
2024/03/24 21:37:50 [error] 17506#0: *381 "/home/ruoyi/projects/static-web/index.html" is not found (2: No such file or directory), client: 192.168.10.212, server: localhost, request: "GET / HTTP/1.1", host: "192.168.10.195"

参考资料:

https://doc.ruoyi.vip/ruoyi/other/faq.html#%E5%A6%82%E4%BD%95%E9%83%A8%E7%BD%B2%E9%85%8D%E7%BD%AE%E6%94%AF%E6%8C%81https%E8%AE%BF%E9%97%AE

总结

 这次这个问题解决起来也是花了些时间,但还好最终解决,要不然心情就比较沮丧了。

 


文章作者: 煜总
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 煜总 !
  目录