自签名多级证书亲测可用
Posted sxdtzhp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自签名多级证书亲测可用相关的知识,希望对你有一定的参考价值。
rem 不能使用jdk1.7
set JAVA_HOME=E:\\tools\\java\\jdk1.8.0_181x64
set PATH=%JAVA_HOME%\\bin;%PATH%
cd E:\\编程技术\\pki\\测试自签名多级证书
E:
echo 1)生成自签名根证书testroot,不要重新生成根证书
keytool -genkeypair -alias testroot -deststoretype pkcs12 -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 3650 -keystore testroot.keystore -storepass abcde### -keypass abcde### -dname "CN=testroot, OU=testrootca, O=测试数据证书中心, L=太原, ST=山西省, C=CN"
echo 导出根证书testroot
keytool -exportcert -deststoretype pkcs12 -keystore testroot.keystore -storepass abcde### -alias testroot -file testrootca.cer
echo 2)查看生成的根证书库结果
keytool -list -keystore testroot.keystore -storepass abcde### –v
echo 3) 生成二级的自签名证书
keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 3650 -alias test2.com -keystore test2.com.keystore -storepass abcde### -keypass abcde### -deststoretype pkcs12 -ext bc:ca:true,pathlen:3 -ext SAN=dns:test2.com,dns:www.test2.com,ip:192.168.0.103,ip:127.0.0.1 -dname "CN=www.test2.com, OU=testroot, O=xx科技公司, L=太原, ST=山西省, C=CN"
echo 4)查看生成的二级证书库结果
keytool -list -keystore test2.com.keystore -storepass abcde### –v
echo 生成二级证书签名申请文件
keytool -certreq -keyalg RSA -alias test2.com -deststoretype pkcs12 -ext bc:ca:true,pathlen:3 -ext SAN=dns:test2.com,dns:www.test2.com,ip:192.168.0.103,ip:127.0.0.1 -keystore test2.com.keystore -storepass abcde### -file test2.com.csr -v
echo 查看二级证书签名申请文件
keytool -printcertreq -file test2.com.csr
echo 4.去测试根证书认证中心认证
keytool -gencert -deststoretype pkcs12 -alias testroot -keystore testroot.keystore -storepass abcde### -ext bc:ca:true,pathlen:3 -ext SAN=dns:test2.com,dns:www.test2.com,ip:192.168.0.103,ip:127.0.0.1 -validity 3650 -infile test2.com.csr -outfile test2.com.cer
rem 必须导入签名用的根证书到二级证书库,否则会报错“java.lang.Exception: 无法从回复中建立链”
keytool -importcert -trustcacerts -deststoretype pkcs12 -alias testroot -keystore test2.com.keystore -storepass abcde### -file testrootca.cer
echo 5.导入签名认证后的证书到二级证书库
keytool -importcert -trustcacerts -deststoretype pkcs12 -alias test2.com -keystore test2.com.keystore -storepass abcde### -file test2.com.cer
echo 6.查看结果
cls
keytool -list -keystore test2.com.keystore -storepass abcde### –v
echo 7.安装根证书,只需安装根证书即可,以可以做在setup.exe安装文件
certmgr.Exe /c /add testrootca.cer /s root
或者通过certmgr.msc手工安装证书
证书存储区:
My 个人证书的X.509证书存储区。
AddressBook 其他用户的X.509证书存储区。
AuthRoot 第三方证书颁发机构(CA)的X.509证书存储区。
CertificateAuthority 中间证书颁发机构(CA)的X.509证书存储区。
Disallowed 吊销的证书的X.509证书存储区。
Root 受信任的根证书颁发机构(CA)的X.509证书存储区。
TrustedPeople 直接受信任的人和资源的X.509证书存储区。
TrustedPublisher 直接受信任的发行者的X.509证书存储区。
---------------------------------------------------
把test2.com.keystore拷贝到E:/apache-tomcat-9.0.35/conf/test2.com.keystore
copy test2.com.keystore E:\\apache-tomcat-9.0.35\\conf
修改tomcat配置文件
E:\\apache-tomcat-9.0.35\\conf\\server.xml
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="utf-8"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="E:/apache-tomcat-9.0.35/conf/test2.com.keystore" keystorePass="abcde###"
/>
如要实现访问http自动跳转到https,则在conf/web.xml的最下面</web-app>前加上
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
检查安装结果:
运行: certmgr.msc
证书-当前用户->受信任的根证书颁发机构->证书->testroot
修改C:\\Windows\\System32\\drivers\\etc\\hosts,增加2行:
127.0.0.1 www.test2.com
127.0.0.1 test2.com
启动tomcat
在chrome浏览器登录
访问 http://www.test2.com:8080 时会自动跳转到 https://www.test2.com:8443
https://www.test2.com:8443
-------------------------------------------
echo 测试三级证书
echo 3) 生成三级的自签名证书
keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 3650 -alias test3.com -keystore test3.com.keystore -storepass abcde### -keypass abcde### -deststoretype pkcs12 -ext SAN=dns:test3.com,dns:www.test3.com,ip:192.168.0.103,ip:127.0.0.1 -dname "CN=www.test3.com, OU=testroot, O=xx科技公司, L=太原, ST=山西省, C=CN"
echo 4)查看生成的三级证书库结果
keytool -list -keystore test3.com.keystore -storepass abcde### –v
echo 生成三级证书签名申请文件
keytool -certreq -keyalg RSA -alias test3.com -deststoretype pkcs12 -ext SAN=dns:test3.com,dns:www.test3.com,ip:192.168.0.103,ip:127.0.0.1 -keystore test3.com.keystore -storepass abcde### -file test3.com.csr -v
echo 查看三级证书签名申请文件
keytool -printcertreq -file test3.com.csr
echo 4.去测试二级书认证中心认证
keytool -gencert -deststoretype pkcs12 -alias test2.com -keystore test2.com.keystore -storepass abcde### -ext SAN=dns:test3.com,dns:www.test3.com,ip:192.168.0.103,ip:127.0.0.1 -validity 3650 -infile test3.com.csr -outfile test3.com.cer
keytool -importcert -trustcacerts -deststoretype pkcs12 -alias testroot -keystore test3.com.keystore -storepass abcde### -file testrootca.cer
rem 必须导入签名用的二级证书到三级证书库,否则会报错“java.lang.Exception: 无法从回复中建立链”
keytool -importcert -trustcacerts -deststoretype pkcs12 -alias test2.com -keystore test3.com.keystore -storepass abcde### -file test2.com.cer
echo 5.导入签名认证后的证书到三级证书库
keytool -importcert -trustcacerts -deststoretype pkcs12 -alias test3.com -keystore test3.com.keystore -storepass abcde### -file test3.com.cer
echo 6.查看结果
cls
keytool -list -keystore test3.com.keystore -storepass abcde### –v
echo 不需要导入test2.com.cer证书
把test3.com.keystore拷贝到E:/apache-tomcat-9.0.35/conf/test3.com.keystore
copy test3.com.keystore E:\\apache-tomcat-9.0.35\\conf
修改tomcat配置文件
E:\\apache-tomcat-9.0.35\\conf\\server.xml
<Connector port="9443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="E:/apache-tomcat-9.0.35/conf/test3.com.keystore" keystorePass="abcde###"
/>
检查安装结果:
修改C:\\Windows\\System32\\drivers\\etc\\hosts,增加2行:
127.0.0.1 www.test3.com
127.0.0.1 test3.com
启动tomcat
在chrome浏览器登录
访问 http://www.test2.com:8080 时会自动跳转到 https://www.test2.com:8443
http://www.test2.com:8080 自动跳转到 https://www.test2.com:8443
http://www.test3.com:8080 自动跳转到 https://www.test3.com:8443 但证书无效
https://www.test2.com:8443
https://www.test3.com:9443
https://test2.com:8443
https://192.168.0.103:8443
https://127.0.0.1:8443
https://test3.com:9443
https://192.168.0.103:9443
https://127.0.0.1:9443
以上是关于自签名多级证书亲测可用的主要内容,如果未能解决你的问题,请参考以下文章
阻止了此文件,因为它没有有效的数字签名以验证其发行者怎么回事啊?
为啥我使用来自 Angular 服务的自签名证书调用 HTTPS API 时会出现此 ERR_CERT_AUTHORITY_INVALID 错误?
当一个 APK 有两个签名并且有一个签名的升级可用时会发生啥?