记一次前后端分离(nginx+springboot)项目的ssl升级过程

整个过程分两步:证书生成和ssl配置

一、证书生成

一种方式是在阿里云和腾讯云上都可以申请免费证书,具体请登录对应服务商网站操作。

另外一种方式是可以使用openssl生成自签名证书使用,下面记录一下自签名证书生成步骤

1、生成私钥

openssl genrsa -des3 -out server.pass.key 2048

2、去除私钥密码

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

3、生成CSR

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

注意:执行完之后根据提示依次填写国家,地区,组织,email和common name,其中common name一定要和域名保持一致,否则浏览器会产生警报

4、生成自签名SSL证书

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

5、将证书转为PEM格式(nginx升级ssl需要配置pem格式证书)

openssl x509 -in server.crt -out server.pem

到此证书生成完毕

二、nginx升级ssl配置

1、检查nginx是否是使用--with-http_ssl_module配置

[root@linux203 sbin]# ./nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_ssl_module

如果configure arguments后是空的,则需要重新使用--with-http_ssl_module参数进行配置

进入nginx源文件目录,执行

./configure --with-http_ssl_module

然后

make

这里不可执行make install,否则会将nginx覆盖掉,make完之后将重新编译的文件替换到nginx(这里后面的路径是nginx的安装目录)

cp ./objs/nginx /usr/local/nginx/sbin/

2、修改nginx配置文件

#配置ssl端口
server {
        listen 443 ssl;
        server_name server;
        
        #证书配置
        ssl_certificate server.pem;
        ssl_certificate_key server.key;
        ssl_session_timeout 5m;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        
        location / {
            root   html;
            index  index.html index.htm;
        }

        # 配置后台接口地址代理转发
        location /api{
            proxy_pass http://后台服务ip:port/;
        }

}

#80端口转发到443端口
server{
        # 80端口是http正常访问的接口
        listen 80;
        server_name server;
        # 在这里,我做了https全加密处理,在访问http的时候自动跳转到https
         rewrite ^(.*) https://$host$1 permanent;
}

修改完之后重新加载nginx配置

nginx -s reload

到此nginx配置完成

升级完成后,通过80端口可访问前端,通过访问api请求访问后台接口

你可能感兴趣的:(nginx,ssl,前后端分离)