网站配置SSL(HTTPS)
第一步: 申请域名
申请域名不是重点,官网都有提示。
第二步: 申请免费SSL证书
申请SSL也不是此次讲述的重点,去官网直接申请即可(我是腾讯云申请的)
1.当你的SSL证书申请通过后(也就几个小时,可能会更快),将SSL证书下载到本地
2.下载后解压缩
- 之前我见他们发的帖子Tomcat文件夹中还有一个txt文件,可能由于我申请SSL的时候设置了秘钥,所以解压后tomcat文件中没有txt密码文件
第三步: 配置Linux服务器
- 前提: 安装nginx,这个百度一下都是,不是本次讲述的重点
配置Linux要用到Nginx文件夹中的文件,其实配置的步骤在腾讯云官网也有提供,下面是我实现的步骤
- 官网链接: https://cloud.tencent.com/document/product/400/35244
1.将解压缩后的Nginx目录下这两个文件上传到
/usr/local/nginx/conf
目录
- www.123.com_bundle.crt
- www.123.com.key
2.配置nginx
- 1).下面的配置我既配置了https ,也配置了http转https,这样的目的是不用每次还得输入https://www.123.com才能是安全的连接。
- 2).我web服务放在了httpd中,httpd之前的监听端口是80,现在防止和nginx冲突,所以改了端口,这个端口自定义,别的服务没有使用就可以,这里也不讲述httpd的安装方式,自行百度就可以
# vim /usr/local/nginx/conf/nginx.conf
----------------下面是配置内容----------------
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name www.123.com;
#证书文件名称
ssl_certificate 1_www.123.com_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_www.123.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /var/www/html/dist;
index index.html index.htm;
}
}
server {
listen 80;
#填写绑定证书的域名
server_name www.123.com;
#把http的域名请求转成https
return 301 https://www.123.com;
}
我之前按照上面的方式配置,发现能用https的方式访问到我的前端页面,但是前端调用后端的时候提示报错,大概的意思就是,https的服务不能调用http的服务。所以在配置后端(Spring boot服务)的时候费了大劲了,那种痛苦的过程就不说了,直接说结果吧!接着往下看
第四步: 配置Spring boot 服务
当我看到网上的帖子Spring boot配置SSL的方式,当时我就想这个配置应该不会太难,只是没有找到对的方式,但是我配置的时候主要是以下的问题(我在本地访问报错)
Caused by: javax.net.ssl.SSLException: Received fatal alert: certificate_unknown
老说我这个证书未知,而后一位大佬的一句话让我顿悟了!
SSL 证书只支持申请的域名进行访问,非申请的域名进行访问,将会导致证书错误。
一开始我看到这句话没有深入的理解,像一个无头的苍蝇乱窜的很久,又返回头来读了一遍这句话,顿时茅舍顿开,因为我在本地访问后端无非就是127.0.0.1或是192.xxx.xxx.xx,这个根本就不是我这个证书绑定的域名呀,后来我也是抱着尝试的心态,配置好服务,打包上传linux,启动,用这样的方式去访问https://www.123.com:9091/api,我的天哪,久违的小锁子出现在了我的面前,页面正确的返回了我这个接口的信息,顿时肾上腺素大量的分泌,这就是幸福呀!哈哈,看配置吧
1.将刚刚解压SSL包中的,Tomcat目录下的www.123com.jks文件复制到你微服务的resource目录下,和application.yaml平级(我是放在了网关服务)
2.配置Spring boot服务就是这么的简单!如果你的服务可能还会有其他http来访问你的后端,那你应该去设置http转https,这个网上也有案例,我这里没有这个需求,所以就没有配置!
总结:
好了,到这里别人访问你的服务不会提示这个网站不安全了,以上就是配置https(SSL)的全部示例,如果你有什么好的配置的方法,欢迎留言讨论