一)keytool生成私钥文件(.key)和签名请求文件(.csr),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吧,下面将会介绍。不过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
二)openssl生成私钥文件(.key)和签名请求文件(.csr),以及签发数字证书
操作目录是openssl/bin(没办法改不了环境变量,如果你可以改的话,就不用在这个目录下工作了),为了方便本人把apps下的openssl.cnf也复制到了这个目录下来。文件名都是以本人使用的来说了:
1.首先要生成服务器端的私钥(key文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key
2.openssl req -new -key server.key -out server.csr -config openssl.cnf
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.
3.对客户端也作同样的命令生成key及csr文件:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf
4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
现在我们所需的全部文件便生成了.
另:
client使用的文件有:ca.crt,client.crt,client.key
server使用的文件有:ca.crt,server.crt,server.key
.crt文件和.key可以合到一个文件里面,本人把2个文件合成了一个.pem文件(直接拷贝过去就行了)
---------------------------------------------------
合并证书文件(crt)和私钥文件(key):
#cat client.crt client.key > client.pem
#cat server.crt server.key > server.pem
本文大部分来自网络(http://zhouzhk.iteye.com/blog/135081),稍作增补。
分享到:
相关推荐
Java 生成证书是指通过 Java 的 keytool 工具和 OpenSSL 库生成数字证书的过程。在 HTTPS 环境下,证书是必不可少的组件, play a crucial role in ensuring the security and authenticity of online transactions....
OpenSSL和Keytool是两个在IT领域中广泛使用的工具,主要涉及网络安全和证书管理。OpenSSL是一个开源的库,提供了各种加密算法、安全协议以及用于创建数字证书的工具。Keytool则是Java平台上的一个命令行工具,用于...
本主题将深入探讨如何使用Keytool和OpenSSL这两个工具来生成和签发数字证书。 首先,让我们了解什么是数字证书。数字证书是一种电子文档,由受信任的证书颁发机构(CA)签发,它包含公钥的所有者信息以及公钥本身。...
在本文档中,我们将深入探讨如何使用OpenSSL来制作和管理证书,这些证书在数字证书认证和Java安全环境中至关重要。首先,我们来看构建根证书的过程: 1. **生成根证书私钥**: 使用`openssl genrsa`命令创建一个...
在本篇文章中,我们将深入探讨如何使用Java来获取数字证书的信息,包括使用TOMCAT和JDK搭建SSL服务的过程、如何用OpenSSL签发证书以及如何支持第三方CA等内容。 #### 一、使用TOMCAT和JDK搭建SSL服务 ##### 1. ...
- **CA(Certificate Authority)**:证书颁发机构,负责验证申请者身份,并为其签发数字证书。 ### 二、证书与密钥的生成 #### 1. 初始化CA目录结构 - 创建必要的目录结构:`certs`(存放证书)、`newcerts`...
4. **服务器身份验证**:openssl用于生成和管理服务器的数字证书,确保服务器的身份可信。 总的来说,openssl通过非对称加密、数字签名和数字证书等技术,为互联网通信提供了安全保障,防止数据在传输过程中被窃取...
PKI(Public Key Infrastructure)是一种基于公钥加密技术的基础设施,它使用数字证书来验证网络实体的身份,防止中间人攻击和其他网络安全威胁。 首先,我们需要理解Weblogic服务器上的双向SSL(Secure Sockets ...
Java自带了一个名为`keytool`的命令行工具,用于管理密钥库(keystore)和数字证书。你可以使用它来生成自签名证书、导入/导出证书、查看密钥库中的条目等。例如,生成一个新的自签名证书的命令是: ``` keytool ...
1. 生成私钥和证书请求(CSR):使用Keytool或OpenSSL生成服务器的私钥和证书请求。 2. 申请CA签名:将CSR提交给证书颁发机构,获取签署的服务器证书。 3. 创建或更新keystore:将CA签发的证书导入到keystore中,与...
在配置SSL时,使用keytool生成密钥库(keystore)和自签名证书,或者请求由证书颁发机构(CA)签发的证书。 2. **生成密钥库和自签名证书**: 文档中提到使用keytool.exe创建一个名为hello.jks的密钥库,并生成一个...
- 使用命令行工具`openssl genrsa`来生成一个RSA私钥。默认情况下,私钥长度为512位到1024位之间: ``` openssl genrsa -out root-key.key 1024 ``` 2. **创建证书请求(CSR)** - 通过私钥创建一个证书签名...
3. **生成应用程序的私钥和证书请求**:使用`keytool`生成应用程序的私钥对,并创建一个证书签名请求(CSR)。CSR包含了你的组织信息和公钥,发送给北京CA以获取签名的证书。 4. **申请并安装证书**:将CSR提交给北京...
HTTPS是在HTTP协议的基础上加入SSL/TLS(Secure Socket Layer/Transport Layer Security)协议,通过使用数字证书来验证服务器的身份,并使用公钥加密技术对数据进行加密,防止中间人攻击和数据篡改。 要为Tomcat...
- 使用OpenSSL工具生成私钥: ```shell openssl genrsa -out root/root-key.pem 1024 ``` - 创建证书请求文件: ```shell openssl req -new -out root/root-req.csr -key root/root-key.pem ``` - 根据证书...
在IT行业中,证书,尤其是数字证书,是保障网络通信安全的重要工具。它们用于证明用户、服务器或设备的身份,确保信息在传输过程中不被篡改。 在描述中提到了一个博客链接,虽然没有具体内容,但我们可以推测这是博...
- 步骤一:打开控制台,如Keytool或openssl,用于管理数字证书。 - 步骤二:生成证书请求(CSR),这包含公钥和组织信息。 - 步骤三:导出私钥,这是服务器用于解密由客户端发送的加密信息的密钥。 - 步骤四:...
1. **创建根证书**:使用OpenSSL等工具生成自签名根证书。这涉及到生成私钥和自签名证书,并将其保存为PEM或DER格式的文件。 2. **导入根证书到Java信任库**:将生成的根证书导入到Java的信任存储库。这通常涉及到...