centos搭建https服务器(阿里云 tomcat)

此时应该已经能达到外网通过http访问tomcat的程度

然后开始搭建https服务器

一、为服务器生成证书

1、切换到java安装目录

2、用keytool为tomcat生成证书(这个软件好像是centos上自带的)

keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 36500

生成证书的时候会要添加密码,我的密码是实验室台式机的密码,名称是tomcat

命令运行结束之后生成了tomcat.keystore

二、为客户端生成证书

1、生成客户端证书:client.p12(好像每次生成证书的时候都需要设定密码名字之类的东西)

keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -validity 36500

密码还是实验室台式机的密码

三、让服务器信任证书

1、将client.p12转换成client.cer

keytool -export -alias client -keystore client.p12 -storetype PKCS12 -rfc -file client.cer

2、将client.cer导入到tomcat的信任证书链中

keytool -import -alias client-v -file client.cer -keystore tomcat.keystore

四、让客户端信任服务器证书

1、把tomcat证书导出为tomcat.cer文件(导出根证书)

keytool -export -v -alias tomcat -file tomcat.cer -keystore tomcat.keystore

2、把tomcat.cer文件转换成tomcat.pem文件,并上传到IoT平台的应用(centos自带openssl)

openssl x509 -inform der -in tomcat.cer -out tomcat.pem

五、将华为提供的证书导入tomcat信任证书链中

1、先将化为提供的outgoing.CertwithKey.pkcs12转换成outgoing.CertwithKey.pem证书

openssl pkcs12 -in outgoing.CertwithKey.pkcs12 -out outgoing.CertwithKey.pem

注意:EnterImport Password为:IoM@1234,下面两个输入密码的地方可自行设置,我将其设置为实验室台式机的密码

再把outgoing.CertwithKey.pem导入tomcat的信任证书链

keytool -import -v -file outgoing.CertwithKey.pem -alias huawei_out -keystore tomcat.keystore

2、将ca.jks转换成ca.p12证书

keytool -importkeystore -srckeystore ca.jks -destkeystore ca.p12 -srcstoretype jks -deststoretype pkcs12

两个输入密码的地方可自行设置(实验室台式机), 源密钥库口令为:Huawei@123

再把ca.p12转换成ca.pem证书

openssl pkcs12 -in ca.p12 -out ca.pem

最后把ca.pem导入tomcat的信任证书链(其中的密码是实验室台式机的密码)

keytool -import -v -file ca.pem -alias huawei_ca -keystore tomcat.keystore

六、配置Tomcat服务器(由于阿里云貌似只能将443开放成https端口,所以只能用443)

参考:https://www.cnblogs.com/baiqiantao/p/5384127.html

修改conf/server.xml

<Connector port="443" protocol="HTTP/1.1"
               SSLEnabled="true" scheme="https" secure="true" 
		   clientAuth="true" sslProtocol="TLS" 
keystoreFile="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/tomcat.keystore"
keystorePass="实验室台式机的密码" 
truststoreFile="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/tomcat.keystore" 
truststorePass="实验室台式机的密码"/>

属性说明:

clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证

keystoreFile:服务器证书文件路径

keystorePass:服务器证书密码

truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书

truststorePass:根证书密码

七、测试

将outgoing.CertwithKey.pkcs12证书导入到浏览器中

证书密码:IoM@1234

登录服务器的443端口,会提示“选择证书”,选择之后会显示tomcat初始界面

问题和注意事项:

1、用以下命令可查看端口占用情况

netstat -tunlp |grep 443

2、在今年一月份的时候电信平台对证书进行了下更新,主要是在ca.jks文件中新增了“icesslkey”这个条目,但是不知道为什么,用这个新的ca.jks文件生成的tomcat.keystore会比之前的版本少一个“huawei_out”条目,然后浏览器就不能访问了。此问题有待探究

3、在浏览器中安装outgoing那玩意的时候,windows不能验证该证书(推测可能是由于电脑中没有安装“颁发者”的证书),但是这证书依旧可以让我通过https协议访问我的https服务器。

上图中的“您有一个与该证书对应的私钥”,不知道这个私钥指的是什么

4、将浏览器中的tomcat.keystore证书去除,发现依然可以通过浏览器访问我的https服务器,那这个tomcat.keystore对浏览器来说有什么用?

猜你喜欢

转载自blog.csdn.net/m1f2c3/article/details/88895650