Linux下的shelle脚本(注意最后一行keytool命令位于$JAVA_HOME/bin下):
md ca
md client
md server
md jks
openssl genrsa -out ca/ca-key.pem 2048
openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12
openssl genrsa -out server/server-key.pem 2048
openssl req -new -out server/server-req.csr -key server/server-key.pem
openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12
openssl genrsa -out client/client-key.pem 2048
openssl req -new -out client/client-req.csr -key client/client-key.pem
openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
keytool -keystore jks/truststore.jks -keypass changeit -storepass 123456 -alias ca -import -trustcacerts -file ca/ca-cert.pem
tomcat的conf目录下server.xml片段:
<Connector
SSLEnabled="true"
clientAuth="true"
maxThreads="150"
port="443"
protocol="HTTP/1.1"
scheme="https"
secure="true"
sslProtocol="TLS"
keystoreFile="conf/server.p12"
keystorePass="123456"
keystoreType="PKCS12"
truststoreFile="conf/ca.p12"
truststorePass="123456"
truststoreType="PKCS12" />
参考文章:
《实现Tomcat双向认证》
2012.03.29 15:40补充:
不知道为什么,按上面所说配置的server.xml没有起作用,改成JKS方式的truststore才能成功,如下:
<Connector
port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="/Applications/tomcat/ssl/server/server.p12"
keystorePass="123456"
keystoreType="PKCS12"
truststoreFile="/Applications/tomcat/ssl/jks/truststore.jks"
truststorePass="123456"
truststoreType="JKS"/>
分享到:
相关推荐
总结来说,自签署根证书、服务器证书和客户端证书在不同场景下各有作用,虽然自签署过程相对简单,但在公开互联网上,使用权威CA签发的证书更为可靠。理解并掌握这些证书的原理和操作,对于维护网络安全至关重要。
本文将详细介绍如何使用 OpenSSL 创建和管理CA证书、服务器证书和客户端证书,以实现SSL单向认证和双向认证。 首先,我们来看一下如何生成 CA(证书颁发机构)证书。CA证书是信任的根,用于签署其他证书,确保网络...
#### Tomcat和Openssl构建HTTPS双向认证 ###### 选择HTTPS WEB服务器 Linux下安装OpenSSL 一、创建服务器证书、客户端证书以及CA 1、生成--服务器端--私钥和证书请求 2、生成--客户端-----私钥和证书请求 3、生成...
OpenSSL 命令生成证书和自签名 OpenSSL 是一个免费的开放源代码密码学库,提供了各种加密算法和协议的实现。使用 OpenSSL 命令可以生成证书和自签名,以下是相关知识点的总结: 一、预安装准备 在开始使用 ...
4. **自签发证书**:使用`openssl x509`命令,结合之前生成的CSR和私钥,自签发一个有效期为365天的证书,`openssl x509 -req -days 365 -in domain.csr -signkey domain.key -out domain.crt`。 接下来,我们需要...
docker构建nginx双向认证https服务器。 openssl命令生成双向认证自签名证书。 nginx配置https(tls)服务。 浏览器访问服务器需要导入客户端证书到浏览器中。
使用openssl生成IIS可用的SHA-256自签名证书 超详细步骤!
本教程将深入探讨如何利用开源工具openssl创建自定义的证书颁发机构(CA),并实现将CA证书安装到浏览器的受信任根证书存储区,以供自定义网络服务使用。 首先,我们需要了解openssl工具。OpenSSL是一个强大的安全...
### HTTPS双向认证证书配置详解 #### 一、前置知识与概念理解 在开始具体操作之前,我们先来明确几个核心概念及其相互之间的关系。 - **DER/CER**: 这些文件通常是二进制格式,仅包含证书而不包含私钥。 - **CRT*...
本教程将详细介绍如何使用OpenSSL在Windows环境下为Nginx服务器配置HTTPS服务,以及如何生成和管理SSL证书。 首先,了解SSL证书的作用。SSL证书通过加密通信,确保了用户与服务器之间的数据传输不被第三方窃取或...
使用 OpenSSL 工具生成 CA 私钥和 CA 证书请求,然后使用 CA 私钥和 CA 证书请求生成自签名 CA 证书。 Step 2:生成服务器证书 使用 OpenSSL 工具生成服务器私钥和服务器证书请求,然后使用 CA 证书签发服务器证书...
在这个场景中,我们将探讨如何在Tomcat 6和5.5版本中配置SSL双向认证,并使用openssl工具生成必要的密钥文件。 **一、生成CA证书** 创建一个自签名的根证书颁发机构(Root CA)是SSL双向认证的第一步。这可以通过...
如果你需要更深入地分析证书,可以使用openssl进行解码和验证,例如: ``` openssl x509 -in server.crt -text -noout ``` 这将显示证书的详细信息,如发行者、有效期、主题、公钥等。 在实际应用中,了解如何获取...
2. **创建证书签名请求(CSR)**:接着,使用私钥生成一个证书签名请求,包含组织信息和服务器的公钥。命令如下: ``` openssl req -new -key server.key -out server.csr ``` 这会提示输入一些信息,如组织名、...
https目前广泛流行,现提供openssl自签名证书的命令和基本验证命令。
1. **创建根证书**:使用命令行工具(如OpenSSL)生成自签名的根证书,设置合适的有效期、密钥长度等参数。 2. **生成子证书**:使用根证书的私钥对子证书进行签名,生成包含目标实体信息(如域名、组织名)的证书...
1. **创建根CA证书**:使用`openssl req`命令生成私钥和自签名的根CA证书。这一步需要配置文件`openssl.cnf`,其中定义了证书的属性,如主体信息、有效期等。 2. **生成中间CA证书**:接着,我们会为中间CA生成私钥...
3. **自签名证书**:如果使用自签名证书,可以直接用OpenSSL的`x509`命令,基于CSR和私钥生成证书。 4. **申请CA证书**:如果需要权威证书,将CSR提交给CA,完成支付和验证流程后,会收到正式的SSL证书。 5. **配置...