SSL-用Keytool和OpenSSL生成和签发数字证书接上篇文章。本文大部分来自网络,稍作增补。忘记从哪里来的了,感谢最初探索的匿名兄 !
J2SDK在目录%JAVA_HOME%/bin提供了密钥库管理工具Keytool,用于管理密钥、证书和证书链。Keytool工具的命令在JavaSE6中已经改变,不过以前的命令仍然支持。Keytool也可以用来管理对称加密算法中的密钥。
最简单的命令是生成一个自签名的证书,并把它放到指定的keystore文件中:
keytool -genkey -alias tomcat -keyalg RSA -keystore c:/mykey
如果c:/mykey文件不存在,keytool会生成这个文件。按照命令的提示,回答一系列问题,就生成了数字证书。注意,公共名称(cn)应该是服务器的域名。这样keystore中就存在一个别名为tomcat的实体,它包括公钥、私钥和证书。这个证书是自签名的。<o:p></o:p>
Keytool工具可以从keystore中导出证书,但是不能导出私钥。对于配置apache这样的服务器,就不太方便。这种情况下就完全用OpenSSL吧,上一篇文章《SSL-用OpenSSL生成证书文件》中已经做了介绍。不过keytool对于J2EE AppServer是很有用的,它们就是用keystore存储证书链的。keystore的作用类似于windows存放证书的方式,不过跨平台了,^_^下面用Keytool生成CSR(Certificate Signing Request),并用OpenSSL生成CA签名的证书。
1. 准备
1) 在bin目录下新建目录 demoCA、demoCA/certs、demoCA/certs 、 demoCA/newcerts
2) 在demoCA建立一个空文件 index.txt
3) 在demoCA建立一个文本文件 serial, 没有扩展名,内容是一个合法的16进制数字,例如 0000
4) 配置环境变量PATH,加入%JAVA_HOME%/bin,本文用的JavaSDK1.6
2. 生成CA的自签名证书
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
3. 生成server端证书
1) 生成KeyPair生成密钥对
keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456 -keystore server_keystore
输入common name时,要和服务器的域名保持一致。
2) 生成证书签名请求
keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore
3) 用CA私钥进行签名,也可以到权威机构申请CA签名。
openssl ca -in tomcat_server.csr -out tomcat_server.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf
其中-notext表示不要把证书文件的明文内容输出到文件中去,否则在后面用keytool导入到keystore时会出错。
//补充一点:如果提示没有jli.dll文件,可到%java_home%\bin下找到。(我用的时候使用的是绿色版的j2sdk,提示缺少该文件,拷贝一个就好了!)
4) 导入信任的CA根证书到keystore
keytool -import -v -trustcacerts -alias my_ca_root -file ca.crt -storepass 123456 -keystore server_keystore
5) 把CA签名后的server端证书导入keystore
keytool -import -v -alias tomcat_server -file tomcat_server.crt -storepass 123456 -keystore server_keystore
6) 查看server端证书
keytool -list -v -keystore server_keystore
可以看到tomcat_server的证书链长度是2
4. 生成client端证书
1) 生成客户端CSR
openssl genrsa -des3 -out tomcat_client.key 1024
openssl req -new -key tomcat_client.key -out tomcat_client.csr -config openssl.cnf
2) 用CA私钥进行签名,也可以到权威机构申请CA签名
openssl ca -in tomcat_client.csr -out tomcat_client.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf
3) 生成PKCS12格式证书
openssl pkcs12 -export -inkey tomcat_client.key -in tomcat_client.crt -out tomcat_client.p12
4) 使用Keytool列出pkcs12证书的内容:
keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12
分享到:
相关推荐
3. **生成证书签名请求(CSR)**:接着,基于刚才生成的私钥创建一个证书签名请求,这将包含服务器的相关信息。命令如下: ``` openssl req -new -key private.key -out CSR.csr ``` 在交互式提示中,输入服务器的...
这两个工具在实际工作中经常配合使用,例如,OpenSSL可以用来生成证书和私钥,然后通过Keytool导入到Java应用的KeyStore中。`openss简介.doc`可能包含了OpenSSL的详细使用方法和常见操作步骤,而`ca_sign.txt`可能是...
以上就是Tomcat SSL认证设置及证书自动生成的完整流程,包括了使用OpenSSL和keytool生成证书、在Tomcat中配置SSL以及在客户端浏览器导入证书的详细步骤。这个过程中,安全性和合规性是至关重要的,因为自签发的证书...
在Jetty中配置SSL,我们通常需要使用OpenSSL来生成自签名的证书。 以下是使用OpenSSL自制SSL证书的步骤: 1. 安装OpenSSL:首先确保你的系统中已经安装了OpenSSL。如果未安装,可以通过相应的软件包管理器(如...
2. **创建根证书**:使用`openssl`的`req`命令生成根证书的私钥和CSR,然后用`x509`命令自签发证书。 3. **创建服务器证书**:生成服务器私钥,然后用`req`命令生成CSR,再用根证书的私钥签署这个CSR,得到服务器...
- 生成服务器证书:首先,需要使用工具如Keytool或OpenSSL生成服务器的自签名证书。 - 配置CXF:在CXF客户端,通过设置`TrustManager`来信任服务器的证书。这通常在`ClientSSLSocketFactory`或`SSLContext`中完成...
在本篇文章中,我们将深入探讨如何使用Java来获取数字证书的信息,包括使用TOMCAT和JDK搭建SSL服务的过程、如何用OpenSSL签发证书以及如何支持第三方CA等内容。 #### 一、使用TOMCAT和JDK搭建SSL服务 ##### 1. ...
- **导入证书**:将SSL证书转换为PKCS12格式,然后使用Java的`keytool`导入到Keystore中。 - **编辑server.xml**:在`Connector`元素中配置SSL,指定Keystore路径、密码和端口。 - **重启Tomcat**:修改后,重启...
在本文档中,我们将深入探讨如何使用OpenSSL来制作和管理证书,这些证书在数字证书认证和Java安全环境中至关重要。首先,我们来看构建根证书的过程: 1. **生成根证书私钥**: 使用`openssl genrsa`命令创建一个...
- **创建自签名证书**:使用`openssl req`命令生成证书请求,然后用`openssl x509`命令自签发证书。 - **导出PEM格式**:通常需要将证书和私钥转换为Java能识别的PEM格式,使用`openssl pkcs8`和`openssl pem`命令...
SSL证书由受信任的证书颁发机构(CA)签发,包含公钥和身份信息。当客户端(如浏览器)与服务器建立连接时,服务器会发送其SSL证书,客户端验证证书的有效性后,双方建立一个加密的连接,确保数据在传输过程中不被...
这通常涉及到使用Java的`SSLContext`和`SSLSession`等类来获取客户端证书,并验证其是否有效。 1. **获取客户端证书** 在处理HTTP请求的过程中,可以使用`HttpServletRequest`对象的`getHeader("X-Client-Cert")`...
然后,你可以用这个CSR向权威的证书颁发机构(CA)申请一个正式的SSL证书,或者使用OpenSSL自签发一个证书(例如:selfsigned.crt)。 4. **配置Tomcat的SSL**:在Tomcat的配置文件`server.xml`中,你需要修改或...
在描述中提到的调试过程,可能涉及到使用工具(如keytool或openssl)来创建、查看和管理证书。通过`test.00fly.online`这个域名,我们可以推测这可能是针对线上环境的SSL配置,调试过程中可能遇到了证书的信任问题、...
在配置SSL时,使用keytool生成密钥库(keystore)和自签名证书,或者请求由证书颁发机构(CA)签发的证书。 2. **生成密钥库和自签名证书**: 文档中提到使用keytool.exe创建一个名为hello.jks的密钥库,并生成一个...
总的来说,openssl通过非对称加密、数字签名和数字证书等技术,为互联网通信提供了安全保障,防止数据在传输过程中被窃取或篡改。对于开发者来说,了解并熟练使用openssl是构建安全网络服务的基础。在本文中,我们只...
1. 生成私钥和证书请求(CSR):使用Keytool或OpenSSL生成服务器的私钥和证书请求。 2. 申请CA签名:将CSR提交给证书颁发机构,获取签署的服务器证书。 3. 创建或更新keystore:将CA签发的证书导入到keystore中,与...