整个过程分两步:证书生成和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请求访问后台接口