openssl和keytool制证(tomcat ssl配置)
编译好openssl就可以使用了。 生成CA跟证书与私钥req -new -x509 -keyout ca.key -out ca.crt -days 365 -config openssl.cnf这样我们就得到了私钥文件ca.key ca根证书ca.crt。openssl.cnf可以去官网下载 不过它是适合linux系统的,需要修改,全部改成双//。
·
编译好openssl就可以使用了。
生成CA跟证书与私钥
req -new -x509 -keyout ca.key -out ca.crt -days 365 -config openssl.cnf
这样我们就得到了私钥文件ca.key ca根证书ca.crt。openssl.cnf可以去官网下载 不过它是适合linux系统的,需要修改 ,全部改成双//。
利用keytool生成证书请求。
首先说明几个概念:
keytool -import -v -trustcacerts -alias ca_root -file ca.crt -keystore d:/ trust .keystore
可以先将CA的根证书ca.crt导入到server.keystore中 在导入server.crt试试看能不能取代密钥仓库原有的证书链。取代上面括号中的
首先说明几个概念:
keytool 将密钥和证书储存在一个所谓的密钥仓库中。
在密钥仓库中有两种不同类型的项:
密钥项 : 每项存放极为敏感的加密密钥信息,这种信息以一种受保护的格式储存以防止未授权的访问。通常,储存在这类项中的密钥是机密密钥,或是伴有用于认证相应公钥用的证书“链”的私钥。 keytool 只处理后一类型的项,即私钥及其关联的证书链。
可信任的证书项 : 每项包含一个属于另一团体的公钥证书。它之所以叫做“可信任的证书”,是因为密钥仓库的拥有者相信证书中的公钥确实属于证书“主体”(拥有者)识别的身份。证书签发人通过对证书签名来保证这点。
对所有的密钥仓库项(密钥项和可信任的证书项)的访问都要通过唯一的别名来进行。别名不区分大小写,即别名 SHECA 和 sheca 指的是同一密钥仓库项。
当用 -genkey 命令来生成密钥对(公钥和私钥)或用 -import 命令来将证书或证书链加到可信任证书的清单中,以增加一个实体到密钥仓库中,必须指定了一个别名。后续 keytool 命令必须使用这一相同的别名来引用该实体。
当第一次产生密钥时,链中只含有一个元素,即自签名证书。自签名证书是一个这样的证书:其签发人(签名人)与主体(证书所认证的公钥所属的实体)相同。当调用 -genkey 命令来生成新的公钥/私钥对时,他同时也把公钥打包进自签名证书中(在对应的密钥仓库中)。
密钥项 : 每项存放极为敏感的加密密钥信息,这种信息以一种受保护的格式储存以防止未授权的访问。通常,储存在这类项中的密钥是机密密钥,或是伴有用于认证相应公钥用的证书“链”的私钥。 keytool 只处理后一类型的项,即私钥及其关联的证书链。
可信任的证书项 : 每项包含一个属于另一团体的公钥证书。它之所以叫做“可信任的证书”,是因为密钥仓库的拥有者相信证书中的公钥确实属于证书“主体”(拥有者)识别的身份。证书签发人通过对证书签名来保证这点。
对所有的密钥仓库项(密钥项和可信任的证书项)的访问都要通过唯一的别名来进行。别名不区分大小写,即别名 SHECA 和 sheca 指的是同一密钥仓库项。
当用 -genkey 命令来生成密钥对(公钥和私钥)或用 -import 命令来将证书或证书链加到可信任证书的清单中,以增加一个实体到密钥仓库中,必须指定了一个别名。后续 keytool 命令必须使用这一相同的别名来引用该实体。
当第一次产生密钥时,链中只含有一个元素,即自签名证书。自签名证书是一个这样的证书:其签发人(签名人)与主体(证书所认证的公钥所属的实体)相同。当调用 -genkey 命令来生成新的公钥/私钥对时,他同时也把公钥打包进自签名证书中(在对应的密钥仓库中)。
之后,当证书签名请求 (CSR) 被生成并送至认证机构 (CA) 后, CA 的答复将被导入,证书链将取代自签名证书。在链的底部是认证主体公钥的 CA 所发放的证书(答复)。链中下一个证书是用于认证 CA 公钥的证书。(证书链一般是pkcs7格式的)
生成密钥对
keytool -genkey -alias server -keyalg rsa -validity 365 -keystore d:/server.keystore
生成证书请求
keytool -certreq -alias server -file server.csr -keystore d:/server.keystore
利用openssl对server.csr签名
openssl ca -in d:/server.csr -out server.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf
直接这样会报错,主要是因为openssl.cnf配置文件的原因。打开这个配置文件,你会看到里面有很多目录,你需要创建对应的目录结构,创建demoCA文件夹以及其子文件newcerts ,文件index.txt、 serial。 如果这样还是会报错 ,需要注释掉配置文件中的#x509_extensions = x509v3_extensions
keytool -genkey -alias server -keyalg rsa -validity 365 -keystore d:/server.keystore
生成证书请求
keytool -certreq -alias server -file server.csr -keystore d:/server.keystore
利用openssl对server.csr签名
openssl ca -in d:/server.csr -out server.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf
直接这样会报错,主要是因为openssl.cnf配置文件的原因。打开这个配置文件,你会看到里面有很多目录,你需要创建对应的目录结构,创建demoCA文件夹以及其子文件newcerts ,文件index.txt、 serial。 如果这样还是会报错 ,需要注释掉配置文件中的#x509_extensions = x509v3_extensions
签名后就可以将根证书ca.crt和签好名都server.crt导入到keytool的受信任的仓库truts.keystore
keytool -import -v -trustcacerts -alias ca_root -file ca.crt -keystore d:/ trust .keystore
keytool -import -v -alias caroot -file ca.crt -keystore d:/server.keystore
keytool -import -v -
trustcacerts
-alias server -file server.crt -keystore d:/server.keystore
记得有2个密钥仓库,一个也可以,但是配置中有2个。
然后在tomcat的server.xml中配置
更多推荐
已为社区贡献1条内容
所有评论(0)