Spring Boot 配置ssl证书实现https详细

[color=red][size=large][b]一.注意事项[/b][/size][/color]

[size=medium]域名和服务器IP是一对一绑定的,所以对于一般域名只能对应一个证书,但如果你想把已经购买的并且已经安装在服务器的证书,在其它服务器上再次使用安装证书,前提是购买的域名证书是以通配符(*)开头的域名(例如:*.yyy.12345.com),则可以再多个服务器上安装证书,其它可以安装的服务器域名(可以是test.yyy.12345.com,demo.yyy.12345.com等)。[/size]

[color=red][size=large][b]二.安装证书[/b][/size][/color]
[size=medium]1.首先需要安装OpenSSL的开源软件包,OpenSSL可以下cmd命令上下,进行证书相关的操作!貌似很强大!


2.在服务上用openssl生成公钥和私钥
openssl req -new -key myPrivateKey.key -out server.csr
myPrivateKey.key自己保存,server.csr提交给代理商(证书颁发机构)进行签名,证书颁发机构签名完成后会给出 yourDomain.crt文件(需要注意的是证书颁发机构会返回不止一个crt文件,刚开始研究这SSL的时候总以为都是有用的,但后来发现,其实里面的内容都是一样的!具体我也没完全搞明白)

3.或是你已经有购买的证书,已经有 crt证书和.key文件 或其它格式证书(已经有要能得到crt文件或其它格式的证书文件即可,理论上可以去证书颁发机构官网再去重新下载一份)。

4.之前我不太理解为什么会有这么多格式(crt,cer,pem,p12等),其实貌似他们之间是可以互相转换的.你的项目需要用到哪些格式的证书文件,你就进行转换就可以了(具体怎么转,我也是临时去网上查)!
[color=red]由于我们是在Java环境中,常用的证书形式有p12格式的,jks格式的,所以需要将crt证书进行格式转换,以转换为p12格式为例:[/color]

openssl pkcs12 -export -clcerts -in yourDomain.crt -inkey myPrivateKey.key -out server.p12

[color=red]输入完命令后回车会出现提示输入一个[/color][color=violet]密码,密码[/color][color=red]非常重要,一定要记住,后面会用到![/color]

这样就生成了spring boot上可以用的私钥格式文件 server.p12
在这个转换的过程中要求设置一个密码,[color=red]请记住这个[/color][color=violet]密码[/color]

然后是给spring boot配置 server.p12证书

首先进入cmd用命令查询一下别名
keytool -list -keystore server.p12

运行该命令会提示你输入密码,就是上面转换格式时提示设置的[color=violet]密码[/color],输入[color=violet]密码[/color]后会显示:

[color=darkblue]秘钥库类型: JKS
秘钥库提供方:SUN

您的密钥库包含 1 个条目[/color]

[color=darkred]1[/color][color=darkblue], 2017-1-7, PrivateKeyEntry
证书指纹 (SHA1) : 《这里是密文》[/color]

注意其中这个[color=darkred]1[/color]这是我们运行这个命令的目的,这个1会在spring配置文件中也会用到


把证书server.p12文件复制到spring boot项目中的 src/main/resources/ 目录下,和application.properties平级,主要得放到classpath目录下,方便查找.

在application.properties中添加如下内容(如果是多数据源,就在相应的数据源下添加)
server.port=8443(要使用的端口号,只要不要和服务器上的其它端口号重复就可以)
server.ssl.key-store:classpath:server.p12(证书存放路径,就是src/main/resources/ 目录下,既classpath目录下,所以前面加上classpath:)
server.ssl.key-store-password: [color=violet]密码[/color](就是上面之前设置的[color=violet]密码[/color])
server.ssl.keyStoreType: PKCS12(证书格式,PKCS12格式就是指 p12文件,)
server.ssl.keyAlias: [color=darkred]1[/color](这个是别名,是之前查用领查询出的别名[color=darkred]1[/color],貌似大部分情况私有秘钥privateKey都是[color=darkred]1[/color],)[/size]

[color=red][size=large][b]三.总结[/b][/size][/color]

[size=medium]直接在springboot里面配置是为了应对简单的服务,真正的系统会在nginx上配置证书。[/size]

你可能感兴趣的:(spring,boot,ssl,Https,Spring,Boot,SSL,https)