Contents

基于SpringBoot项目的https

Contents

###1.生成和导入证书步骤:

  1. 生成请求证书:
    1.1  keytool -genkey -alias [Name] -keypass [Password] -keyalg RSA -keysize 2048 -validity 18250 -keystore [Name]
    -alias:后的Name为要申请的证书的别名
    -keypass:后的参数【Password]为证书加密密码,后续步骤还会用到
    -keystore:后的参数【Name】为证书存放空间名称,可以随意填写

例子,cmd然后输入

Keytool -genkey -alias www.test.com -keypass 12345678 - keyalg RSA -keysize 2048 -validity 18250 -keystore www.test.com

{{$.Site.baseURL}}/post/wifeblog/springboot/images/https1.jpg

1.2  keytool -certreq -keyalg RSA -alias [Name] -file request.csr -keystore [Name]
-alias:后的参数[name]必须与步骤1.1相同
-keystore:后的name必须与1.1中-keystore后的相同
例子,cmd然后输入
keytool -certreq -keyalg RSA -alias [Name] -file request.csr -keystore [Name]
会生成一个request.csr,用该请求文件换取颁发的证书(www.test.com.cer)和请求证书(mid.cer)

  1. 导入中间证书
    keytool -import -alias mid-cer -keystore Name -trustcacerts -storepass password -file mid.cer
    Name、password必须与步骤1.1相同
    例:keytool -import -alias mid-cer -keystore www.test.com -trustcacerts -storepass 12345678 -file mid.cer

  2. 导入颁发的证书
    Keytool -import -alias Name -keystore Name -trustcacerts -storepass password -file www.test.com.cer
    Name、password必须与步骤1.1相同
    例:Keytool -import -alias www.test.com -keystore www.test.com -trustcacerts -storepass 12345678 -file www.test.com.cer 上述步骤完成后,会生成一个以www.test.com命名的文件,这个文件就是项目中需要用到的。

###2.在springboot中配置https

  1. 将www.test.com文件放入项目的src/main/resources文件夹下

  2. 修改配置application.properties文件

     #https
     server.port=443
     server.ssl.key-store=classpath:www.test.com
     server.ssl.key-store-password=12345678
     server.ssl.keyStoreType=JKS
     server.ssl.keyAlias=www.test.com
     server.ssl.protocol=TLSv1.2
     server.ssl.enabled=true
     #server.ssl.cipher=ECDHE-RSA-AES256-SHA384
    

server.ssl.key-store: 设置证书存放路径
server.ssl.key-store-password:步骤1.1设置的密码
server.ssl.keyAlias:步骤1.1取的别名
server.ssl.protocol:https协议的类型。一些服务器会做限制,根据具体情况选择。分两大类:SSL,TLS。现在一般用TLS,SSL是TLS的前身。TLS有三个小版本:1.0 1.1 1.2 根据自己项目的具体情况设置。
3. 遇到的问题 浏览器访问时报错:此网站无法提供安全连接。协议不受支持,客户端和服务器不支持一般SSL协议或加密套件。
错误提示了SSL协议版本的问题。server.ssl.protocol就是用来配置协议的,改成跟服务器端一致的协议(如果不知道服务端协议可以一个一个的试)。
openssl s_client -connect serverAddress:port命令可以查看使用协议的版本。 /images/https2.jpg