自己的小项目到了配置ssl的阶段,去网上找到了Let’s Encrypt ssl证书提供商 免费开放 用的人比较多 按照官方文档的说明 去这个网站按照提示操作 我是在centos7操作的
https://certbot.eff.org/#centosrhel7-nginx
大致过程如下
sudo yum install certbot
certbot certonly --standalone -d example.com -d www.example.com
example换成你的域名
然后证书文件会生成在
/etc/letsencrypt/live/www.xxywithpq.cn/目录下,pem结尾的就是证书文件
因为我有一个前后端分离的项目,所以 分为 nginx的配置 和 springboot的配置
1.nginx的配置:
server{
listen 80;
server_name www.xxywithpq.cn;
add_header Strict-Transport-Security max-age=15768000;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2 fastopen=3 reuseport;
server_name www.xxywithpq.cn;
ssl_certificate /etc/letsencrypt/live/www.xxywithpq.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.xxywithpq.cn/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
.........
下面配置省略
.........
}
这里配置了两个server,第一个server是为了有人访问http可以自动跳转https,
ssl_certificate 和 ssl_certificate_key 分别指定了我们刚刚生成的文件,然后重启nginx就可以了!
2.spring boot 的配置:
springboot 我用的是jetty的中间件,然后pem文件它好像不支持,后来我查阅了一下资料,对pem文件进行了转换, 步骤如下:
在linux下分别用下面两句话生成 key.der 和 cert.der
openssl pkcs8 -topk8 -nocrypt -in privkey.pem -inform PEM -out key.der -outform DER
openssl x509 -in fullchain.pem -inform PEM -out cert.der -outform DER
然后用预先编译好的ImportKey.class 文件执行下面的话:
ImportKey.class文件下载地址:
http://download.youkuaiyun.com/detail/lovejj1994/9692456
java ImportKey key.der cert.der
结果会出现以下信息,记住Alias 和 Password,后面有用
Using keystore-file : /root/keystore.ImportKey
One certificate, no chain.
Key and certificate stored.
Alias:importkey Password:importkey
在账户的根目录下 会发现生成了 keystore.ImportKey 文件
改一下名字
mv keystore.ImportKey opennms.keystore
在springboot项目中,编辑application.properties
#SSL
server.port=80
server.ssl.enabled=true
server.ssl.key-store=classpath:opennms.keystore
server.ssl.key-store-password=importkey
server.ssl.key-alias=importkey
把刚刚的 文件引入,还有password和alias,启动项目,ssl配置成功!