Openssl 链接客户端证书

Openssl 链接客户端证书,openssl,client,certificate,chained,Openssl,Client,Certificate,Chained,我想使用SSL客户端证书对连接到tomcat6/7的用户进行身份验证。我已经正确地配置了tomcat,并且我在信任库中用我给tomcat的证书签名的证书正在成功地从IE和Firefox进行身份验证 我还想链接客户端证书,因为我想让客户能够管理自己的用户。我可以通过向客户颁发一个ITerMedia management CA证书来完成这一任务,他们将使用该证书签署其他用户证书。我需要用户的浏览器发送用户证书,该证书与管理CA(由我的根证书签名)链接以进行身份验证 我使用的是openssl,我创建了

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

我还想链接客户端证书,因为我想让客户能够管理自己的用户。我可以通过向客户颁发一个ITerMedia management CA证书来完成这一任务,他们将使用该证书签署其他用户证书。我需要用户的浏览器发送用户证书,该证书与管理CA(由我的根证书签名)链接以进行身份验证

我使用的是openssl,我创建了根CA和中间CA,并使用中间CA对叶证书进行签名。我已将所有三个证书转换为pkcs12和pem,并使用keytool将根证书导入tomcat的信任库。openssl–verify将根据中间证书验证叶pkcs12(中间证书根据根证书验证)。但是我无法获得叶证书(pkcs12)来与根证书(pkcs12)进行验证。我也无法让IE或Firefox使用leaf证书进行身份验证。IE将提示我获取证书,但无法进行身份验证(tomcat的日志中没有提到连接或失败)。Firefox不会提示输入叶证书;它只是无法进行身份验证

下面是我如何尝试使用openssl根据根验证叶:

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

问题是根证书和中间证书没有创建为CA证书

为了将它们创建为CA证书,我添加了

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

我编辑了我原来的帖子来反映这些变化