自签名多级证书亲测可用

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 有两个签名并且有一个签名的升级可用时会发生啥?

CA和证书(企业内网搭建CA服务器生成自签名证书,CA签署,实现企业内网基于key验证访问服务器)

ECDSA证书可以有RSA签名吗?