`
zhouzhk
  • 浏览: 94600 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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时会出错。
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

分享到:
评论
1 楼 gufenglian 2009-12-24  
呵呵,好东西,谢谢楼主讲解,终于对keytool有了那么一点点了解

相关推荐

    OpenSSL生成的ssl证书

    3. **生成证书签名请求(CSR)**:接着,基于刚才生成的私钥创建一个证书签名请求,这将包含服务器的相关信息。命令如下: ``` openssl req -new -key private.key -out CSR.csr ``` 在交互式提示中,输入服务器的...

    OpenSSL and Keytool

    这两个工具在实际工作中经常配合使用,例如,OpenSSL可以用来生成证书和私钥,然后通过Keytool导入到Java应用的KeyStore中。`openss简介.doc`可能包含了OpenSSL的详细使用方法和常见操作步骤,而`ca_sign.txt`可能是...

    Tomcat SSL 认证设置及证书自己生成

    以上就是Tomcat SSL认证设置及证书自动生成的完整流程,包括了使用OpenSSL和keytool生成证书、在Tomcat中配置SSL以及在客户端浏览器导入证书的详细步骤。这个过程中,安全性和合规性是至关重要的,因为自签发的证书...

    jetty-5.1.10加openssl自制证书.zip

    在Jetty中配置SSL,我们通常需要使用OpenSSL来生成自签名的证书。 以下是使用OpenSSL自制SSL证书的步骤: 1. 安装OpenSSL:首先确保你的系统中已经安装了OpenSSL。如果未安装,可以通过相应的软件包管理器(如...

    tomcat的双向ssl配置

    2. **创建根证书**:使用`openssl`的`req`命令生成根证书的私钥和CSR,然后用`x509`命令自签发证书。 3. **创建服务器证书**:生成服务器私钥,然后用`req`命令生成CSR,再用根证书的私钥签署这个CSR,得到服务器...

    4.CXF安全访问之单向SSL或者双向SSL(三)

    - 生成服务器证书:首先,需要使用工具如Keytool或OpenSSL生成服务器的自签名证书。 - 配置CXF:在CXF客户端,通过设置`TrustManager`来信任服务器的证书。这通常在`ClientSSLSocketFactory`或`SSLContext`中完成...

    java获取数字证书信息

    在本篇文章中,我们将深入探讨如何使用Java来获取数字证书的信息,包括使用TOMCAT和JDK搭建SSL服务的过程、如何用OpenSSL签发证书以及如何支持第三方CA等内容。 #### 一、使用TOMCAT和JDK搭建SSL服务 ##### 1. ...

    SSL证书安装.zip

    - **导入证书**:将SSL证书转换为PKCS12格式,然后使用Java的`keytool`导入到Keystore中。 - **编辑server.xml**:在`Connector`元素中配置SSL,指定Keystore路径、密码和端口。 - **重启Tomcat**:修改后,重启...

    OpenSSL证书管理

    在本文档中,我们将深入探讨如何使用OpenSSL来制作和管理证书,这些证书在数字证书认证和Java安全环境中至关重要。首先,我们来看构建根证书的过程: 1. **生成根证书私钥**: 使用`openssl genrsa`命令创建一个...

    java程序实现ssl

    - **创建自签名证书**:使用`openssl req`命令生成证书请求,然后用`openssl x509`命令自签发证书。 - **导出PEM格式**:通常需要将证书和私钥转换为Java能识别的PEM格式,使用`openssl pkcs8`和`openssl pem`命令...

    TomcatSSL证书部署指南.....

    SSL证书由受信任的证书颁发机构(CA)签发,包含公钥和身份信息。当客户端(如浏览器)与服务器建立连接时,服务器会发送其SSL证书,客户端验证证书的有效性后,双方建立一个加密的连接,确保数据在传输过程中不被...

    Tomcat6配置使用SSL双向认证

    这通常涉及到使用Java的`SSLContext`和`SSLSession`等类来获取客户端证书,并验证其是否有效。 1. **获取客户端证书** 在处理HTTP请求的过程中,可以使用`HttpServletRequest`对象的`getHeader("X-Client-Cert")`...

    Tomcat_SSL.rar

    然后,你可以用这个CSR向权威的证书颁发机构(CA)申请一个正式的SSL证书,或者使用OpenSSL自签发一个证书(例如:selfsigned.crt)。 4. **配置Tomcat的SSL**:在Tomcat的配置文件`server.xml`中,你需要修改或...

    springboot工程验证SSL证书

    在描述中提到的调试过程,可能涉及到使用工具(如keytool或openssl)来创建、查看和管理证书。通过`test.00fly.online`这个域名,我们可以推测这可能是针对线上环境的SSL配置,调试过程中可能遇到了证书的信任问题、...

    weblogic配置ssl.pdf

    在配置SSL时,使用keytool生成密钥库(keystore)和自签名证书,或者请求由证书颁发机构(CA)签发的证书。 2. **生成密钥库和自签名证书**: 文档中提到使用keytool.exe创建一个名为hello.jks的密钥库,并生成一个...

    使用openssl 生成免费证书的方法步骤

    总的来说,openssl通过非对称加密、数字签名和数字证书等技术,为互联网通信提供了安全保障,防止数据在传输过程中被窃取或篡改。对于开发者来说,了解并熟练使用openssl是构建安全网络服务的基础。在本文中,我们只...

    WebLogic配置SSL.doc

    1. 生成私钥和证书请求(CSR):使用Keytool或OpenSSL生成服务器的私钥和证书请求。 2. 申请CA签名:将CSR提交给证书颁发机构,获取签署的服务器证书。 3. 创建或更新keystore:将CA签发的证书导入到keystore中,与...

Global site tag (gtag.js) - Google Analytics