我们先来了解一下什么是HTTPS
1. HTTPS概念
1)简介
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。这个系统的最初研发由网景公司进行,
提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
2)HTTPS和HTTP的区别
a. https协议需要到ca申请证书,一般免费证书很少,需要交费。
b. http是超文本传输协议,信息是明文传输;https 则是具有安全性的ssl加密传输协议。
c. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
d. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
3)HTTPS的作用
它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
a. 一般意义上的https,就是服务器有一个证书。主要目的是保证服务器就是他声称的服务器,这个跟第一点一样;服务端和客户端之间的所有通讯,都是加密的。
b. 具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。
c. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。
d.少许对客户端有要求的情况下,会要求客户端也必须有一个证书。
这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。
Springboot 配置SSL过程
1.从SSL证书授权中心获得的。
一般情况下,域名提供商都会有购买SSL证书的入口,具体情况具体分析。
2.SpringBoot配置SSL
作者这里获取到的ssl证书文件结构如下:
这种情况下,我们配置文件里要找的是 tomcat文件夹下的文件。
首先将该jks文件,复制到项目 resources 文件夹下,和 application.properties 同级目录下。
其次在 application.properties 配置文件中,配置如下信息:
#server.ssl.key-store=classpath:4837847_XXX.pfx
#server.ssl.key-store-password=XXXX
#server.ssl.keyStoreType=PKCS12
server.ssl.key-store=classpath:XXXX.jks
server.ssl.key-store-password=XXXX
server.ssl.keyStoreType=JKS
项目编译发布到服务器上的时候,同时需要复制该jks文件到 对应发布文件的同级目录下。
Nginx 配置
server{
listen 443 ssl; # https 协议默认443端口
server_name www.xxx.com;
ssl_certificate /etc/ssl/xxx.pem; #服务器上pem文件的存放路径地址
ssl_certificate_key /etc/ssl/xxx.key; #服务器上key文件的存放路径地址
ssl_session_timeout 50m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /xxx/xxx;
index index.html;
}
}