当前位置:  开发笔记 > 后端 > 正文

链式客户端证书

如何解决《链式客户端证书》经验,为你挑选了1个好方法。

我想使用SSL客户端证书来验证连接到tomcat6/7的用户.我已经正确配置了tomcat,并且我使用我给tomcat的信任库中的证书签署的证书正在从IE和Firefox成功进行身份验证.

我还希望链接客户端证书,因为我想让客户能够管理自己的用户.我可以通过向客户发布一个用于签署其他用户证书的itermediate管理CA证书来实现这一目标.我需要用户的浏览器发送用户证书,与管理CA(由我的根证书签名)链接进行身份验证.

我正在使用openssl,我已经创建了一个根CA和一个中间CA,并且我使用了中间CA来签署叶证书.我已将所有三个证书转换为pkcs12和pem,并使用keytool将根证书导入到tomcat的信任库中.openssl -verify将根据中间证书验证叶子pkcs12(并且中间验证root用户).但我无法获得叶证书(pkcs12)来验证根证书(pkcs12).我也无法使用叶子证书进行IE或Firefox验证.IE将提示我输入证书,但无法进行身份验证(没有提及tomcat日志中的连接或失败).Firefox不会提示提供叶证书; 它根本无法进行身份验证.

以下是我尝试使用openssl验证root对root的方法:

openssl verify -CAfile ..\root\Root.pem Leaf.pem

以下是我用来生成三个证书的脚本:
root.bat:

set name=Root
set keyPassword=dummypassword
set trustPassword=dummypassword
openssl genrsa -des3 -passout pass:%keyPassword% -out %name%.key 4096
openssl req -new -key %name%.key -passin pass:%keyPassword% -out %name%.csr -subj "/C=US/ST=Chaos/L=TimeNSpace/O=None/CN=%name%"
openssl x509 -req -days 3650 -in %name%.csr -signkey %name%.key -passin pass:%keyPassword% -extfile GenerateCertificate.cfg -extensions v3_ca -out %name%.crt
openssl pkcs12 -export -in %name%.crt -inkey %name%.key -passin pass:%keyPassword% -passout pass:%keyPassword% -out %name%.pkcs12
keytool -noprompt -import -file %name%.crt -alias %name% -keystore %name%.truststore -deststorepass %trustPassword%
keytool -list -v -keystore %name%.truststore -storepass %trustPassword% > %name%.truststore.dump.txt
keytool -exportcert -alias %name% -keystore %name%.truststore -storetype jks -storepass %trustPassword% -rfc -file %name%.truststore.pem
openssl pkcs12 -in %name%.pkcs12     -out %name%.pem     -nodes -passin pass:%keyPassword%

intermediate.bat:

set name=Intermediate
set password=dummypassword
set caDir=../root
set caName=Root
set caPassword=dummypassword
openssl genrsa -des3 -passout pass:%password% -out %name%.key 2048
openssl req -new -key %name%.key -passin pass:%password% -out %name%.csr -subj "/C=US/ST=Chaos/L=TimeNSpace/O=None/CN=%name%"
openssl x509 -req -days 3650 -in %name%.csr -CA %caDir%/%caName%.crt -CAkey %caDir%/%caName%.key -passin pass:%caPassword% -set_serial 1 -extfile GenerateCertificate.cfg -extensions v3_ca -out %name%.crt
openssl pkcs12 -export -in %name%.crt -inkey %name%.key -passin pass:%password% -passout pass:%password% -chain -CAfile %caDir%/%caName%.crt -out %name%.pkcs12
openssl pkcs12 -in %name%.pkcs12     -out %name%.pem     -nodes -passin pass:%password%

leaf.bat:

set name=Leaf
set password=dummypassword
set caDir=../intermediate
set caName=Intermediate
set caPassword=dummypassword
openssl genrsa -des3 -passout pass:%password% -out %name%.key 2048
openssl req -new -key %name%.key -passin pass:%password% -out %name%.csr -subj "/C=US/ST=Chaos/L=TimeNSpace/O=None/CN=%name%"
openssl x509 -req -days 3650 -in %name%.csr -CA %caDir%/%caName%.crt -CAkey %caDir%/%caName%.key -passin pass:%caPassword% -set_serial 1 -out %name%.crt
openssl pkcs12 -export -in %name%.crt -inkey %name%.key -passin pass:%password% -passout pass:%password% -chain -CAfile %caDir%/%caName%.pem -out %name%.pkcs12
openssl pkcs12 -in %name%.pkcs12     -out %name%.pem     -nodes -passin pass:%password%

GenerateCertificate.cfg:

[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = CA:true,pathlen:3

user1703874.. 5

问题是根证书和中间证书未创建为CA证书.

我将其添加为CA证书

-extfile GenerateCertificate.cfg -extensions v3_ca

创建脚本,并将GenerateCertificate.cfg文件添加到我的工作目录(其中包含证书创建批处理文件).

我编辑了原始帖子以反映这些变化.



1> user1703874..:

问题是根证书和中间证书未创建为CA证书.

我将其添加为CA证书

-extfile GenerateCertificate.cfg -extensions v3_ca

创建脚本,并将GenerateCertificate.cfg文件添加到我的工作目录(其中包含证书创建批处理文件).

我编辑了原始帖子以反映这些变化.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有