服务器获得 CA 证书

之前服务器已经使用 Certbot 生成了证书,具体可以参考使用 Certbot 安装 Letsencrypt 证书,完成 Letsencrypt 证书安装后,在 /etc/letsencrypt/live/example.com/ 下应该有四个证书相关文件

cert.pem
chain.pem
fullchain.pem
privkey.pem

Copy 证书文件

在 nginx 配置目录下新建目录 cert/ 来存放证书和密钥文件

mkdir /etc/nginx/cert

复制证书文件到此目录并重命名

cd /etc/nginx/cert
cp /etc/letsencrypt/live/example.com/fullchain.pem ./server.pem
cp /etc/letsencrypt/live/example.com/privkey.pem ./privkey.key

Nginx 代理配置

新建配置文件

cd /etc/nginx/sites-available
touch wtf443

编辑配置文件

vim wtf443

填入如下内容

server {
    listen 443;
    server_name 127.0.0.1;
    ssl on;
    root /var/www/wtf443;
    index index.html index.htm;
    ssl_certificate  cert/server.pem;
    ssl_certificate_key cert/privkey.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:8080;
        #index index.html index.htm;
    }
}
server {
    listen 80;
    server_name 127.0.0.1;
    rewrite ^(.*)$ https://$host$1 permanent;
}

使配置生效

完成如上配置后 wtf443 并不生效,还需要在 /etc/nginx/site-enable 目录下添加此文件的软链接

ln -s /etc/nginx/sites-available/wtf443

然后进行如下操作

nginx -t // 检查nginx配置文件是否正确
nginx -s reload // 使配置生效
service nginx restart // 重启 nginx

总结

经过如上操作后,正常情况下就能通过 https://example.com 访问 Tomcat 了,如果不能,先确定 http://example.com:8080 是否能访问 Tomcat ,然后确认 https://example.com 未做代理之前是否能访问