ssl tomcat keystore openssl   2 comments

生成本地数字证书1

keytool -genkeypair -keyalg RSA -keysize  2048 -sigalg SHA1WithRSA -validity 36000 -alias http://www.tony.org -keystore tony.keystore

生成本地数字证书2

keytool -genkeypair -keyalg RSA -keysize  2048 -sigalg SHA1WithRSA -validity 36000 -alias http://www.tony.org -keystore tony.keystore -dname “CN=www.tony.org, OU=tony, O=tony, L=BJ, ST=BJ, C=CN”

导出数字证书

keytool -exportcert -alias http://www.tony.org -keystore tony.keystore -file tony.cer -rfc

打印数组证书

keytool -printcert -file tony.cer

构建CA签发证书

keytool -certreq -alias http://www.tony.org -keystore tony.keystore -file tony.csr -v

导入数字证书

keytool -importcert -trustcacerts -alias http://www.tony.org -file tony.cer -keystore tony.keystore

查看导入数字证书

keytool -list -alias http://www.tony.org -keystore tony.keystore

Posted 2012年01月7日 by gw8310 in ssl, tomcat

Tagged with , , ,

2 responses to “ssl tomcat keystore openssl

Subscribe to comments with RSS.

  1. 2. 构建根证书 在构建根证书前,需要构建随机数文件(.rand),完整命令如代码清单10-10所示。
    代码清单10-10 构建随机数 echo 构建随机数 private/.rand
    openssl rand -out private/.rand 1000
    各参数的含义如下所示:
    rand 随机数命令。
    -out 输出文件路径,这里将随机数文件输出到private目录下。 这里的参数1000,指用来产生伪随机字节数。 上述命令执行结果如图10-16所示。
    图10-16 构建随机数文件
    请读者朋友注意,如果在Windows Vista或Windows 7中未能使用管理权限执行上述命令,
    将无法创建随机数文件

    OpenSSL通常使用PEM(Privacy Enbanced Mail,隐私增强邮件)编码格式保存私钥。
    接下来,我们需要构建根证书密钥(ca.key.pem),完整命令如代码清单10-11所示。 代码清单10-11 构建根证书私钥
    echo 构建根证书私钥 private/ca.key.pem
    openssl genrsa -aes256 -out private/ca.key.pem 2048
    各参数的含义如下所示:
    genrsa 产生RSA密钥命令。
    -aes256 使用AES算法(256位密钥)对产生的私钥加密。可选算法包括DES、DESede、
    IDEA和AES。
    -out 输出路径,这里指private/ca.key.pem。 这里的参数2048,指RSA密钥长度位数,默认长度为512位。 上述命令执行结果,如图10-18所示。
    图10-18 构建根证书私钥
    这时我们需要输入根证书密码“123456”。
    完成密钥构建操作后,我们需要生成根证书签发申请文件(ca.csr),完整命令如代码清单 10-12所示。

    代码清单10-12 生成根证书签发申请
    echo 生成根证书签发申请 private/ca.csr
    openssl req -new -key private/ca.key.pem -out private/ca.csr -subj “/C=CN/ST=BJ/L=BJ/O=zlex/OU=zlex/CN=*.zlex.org”
    各参数的含义如下所示:
    req 产生证书签发申请命令。
    -new 表示新请求。
    -key 密钥,这里为private/ca.key.pem文件。
    -out 输出路径,这里为private/ca.csr文件。
    -subj 指定用户信息,这里使用泛域名“*.zlex.org”作为用户名。 上述命令执行结果,如图10-19所示。
    这时我们需要输入根证书密码“123456”。 得到根证书签发申请文件后,我们可以将其发送给CA机构签发。当然,我们也可以自行
    签发根证书。签发根证书完整命令如代码清单10-13所示。

    图10-19 生成根证书签发申请
    代码清单10-13 签发根证书
    echo 签发根证书 private/ca.cer
    openssl x509 -req -days 10000 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in private/ca.csr -out certs/ca.cer
    各参数的含义如下所示:
    x509 签发X.509格式证书命令。
    -req 表示证书输入请求。
    -days 表示有效天数,这里为10000天。
    -sha1 表示证书摘要算法,这里为SHA1算法。 -extensions 表示按OpenSSL配置文件v3_ca项添加扩展。 -signkey 表示自签名密钥,这里为private/ca.key.pem。 -in 表示输入文件,这里为private/ca.csr。
    -out 表示输出文件,这里为certs/ca.cer。 上述命令执行结果,如图10-20所示。
    图10-20 签发根证书
    这时我们需要输入根证书密码“123456”。
    OpenSSL产生的数字证书不能在Java语言环境中直接使用,需要将其转化为PKCS#12编码 格式。完整命令如代码清单10-14所示。
    代码清单10-14 根证书转换
    echo 根证书转换 private/ca.p12
    openssl pkcs12 -export -cacerts -inkey private/ca.key.pem -in certs/ca.cer -out certs/ca.p12
    各参数的含义如下所示:
    pkcs12 PKCS#12编码格式证书命令。
    -export 表示导出证书。
    -cacerts 表示仅导出CA证书。
    -inkey 表示输入密钥,这里为private/ca.key.pem。 -in 表示输入文件,这里为certs/ca.cer。
    -out 表示输出文件,这里为certs/ca.p12。 上述命令执行结果,如图10-21所示。

    这时我们需要输入根证书密码“123456”。
    个人信息交换文件(PKCS#12)可以作为密钥库或信任库使用,我们可以通过KeyTool查 看该密钥库的详细信息。完整命令如代码清单10-15所示。
    代码清单10-15 查看密钥库信息
    keytool -list -keystore certs/ca.p12 -storetype pkcs12 -v -storepass 123456
    注意,这里参数-storetype值为“pkcs12”。上述命令执行结果如图10-22所示。
    图10-22 查看密钥库信息 现在,我们已经构建了根证书(ca.cer),我们可以使用根证书签发服务器证书和客户证书。
    3. 构建服务器证书 服务器证书的构建与根证书构建相似,首先需要构建私钥。完整命令如代码清单10-16所示。
    代码清单10-16 构建服务器私钥
    echo 构建服务器私钥 private/server.key.pem
    openssl genrsa -aes256 -out private/server.key.pem 2048
    各参数的含义如下所示:
    genrsa 产生RSA密钥命令。
    -aes256 使用AES算法(256位密钥)对产生的私钥加密。可选算法包括DES、DESede、
    IDEA和AES。
    -out 输出路径,这里指private/server.key.pem。
    华章IT 15周年,《Java加密与解密的艺术》互动网首发http://www.china-pub.com/196506
    第10章 终极武器― 数字证书 347 这里的参数2048,指RSA密钥长度位数,默认长度为512位。
    上述命令执行结果,如图10-23所示。
    图10-23 产生服务器证书密钥
    这时我们需要输入服务器证书密码“123456”。
    完成服务器证书密钥构建后,我们需要产生服务器证书签发申请。完整命令如代码清单 10-17所示。
    代码清单10-17 生成服务器证书签发申请
    echo 生成服务器证书签发申请 private/server.csr
    openssl req -new -key private/server.key.pem -out private/server.csr -subj “/C=CN/ST=BJ/L=BJ/O=zlex/OU=zlex/CN=www.zlex.org”
    各参数的含义如下所示:
    req 产生证书签发申请命令。
    -new 表示新请求。
    -key 密钥,这里为private/ca.key.pem文件。
    -out 输出路径,这里为private/ca.csr文件。
    -subj 指定用户信息,这里使用域名“www.zlex.org”作为用户名。 上述命令执行结果,如图10-24所示。
    图10-24 生成服务器证书签发申请 这时我们需要输入服务器证书密码“123456”。
    我们已经获得了根证书,可以使用根证书签发服务器证书。完整命令如代码清单10-18所示。 代码清单10-18 签发服务器证书
    echo 签发服务器证书 private/server.cer
    openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certs/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.cer
    各参数的含义如下所示:
    x509 签发X.509格式证书命令。 -req 表示证书输入请求。

    -days 表示有效天数,这里为3650天。
    -sha1 表示证书摘要算法,这里为SHA1算法。 -extensions 表示按OpenSSL配置文件v3_req项添加扩展。 -CA 表示CA证书,这里为certs/ca.cer。
    -CAkey 表示CA证书密钥,这里为private/ca.key.pem。 -CAserial 表示CA证书序列号文件,这里为ca.srl。 -CAcreateserial 表示创建CA证书序列号。
    -in 表示输入文件,这里为private/server.csr。
    -out 表示输出文件,这里为certs/server.cer。 上述命令执行结果,如图10-25所示。
    图10-25 签发服务器证书
    这时我们需要输入服务器证书密码“123456”。
    这里我们同样需要将OpenSSL产生的数字证书转化为PKCS#12编码格式。完整命令如代码 清单10-19所示。
    代码清单10-19 服务器证书转换
    echo 服务器证书转换 private/server.p12
    openssl pkcs12 -export -clcerts -inkey private/server.key.pem -in certs/server.cer -out certs/server.p12
    各参数的含义如下所示:
    pkcs12 PKCS#12编码格式证书命令。
    -export 表示导出证书。
    -clcerts 表示仅导出客户证书。
    -inkey 表示输入密钥,这里为private/server.key.pem。 -in 表示输入文件,这里为certs/ca.cer。
    -out 表示输出文件,这里为certs/server.p12。 上述命令执行结果,如图10-26所示。
    图10-26 服务器证书转换 这时我们需要输入服务器证书密码“123456”。
    现在,我们已经构建了服务器证书(server.cer),并可使用该证书构建基于单向认证的网

    4. 构建客户证书
    客户证书的构建与服务器证书构建基本一致,首先需要构建私钥。完整命令如代码清单 10-20所示。
    代码清单10-20 产生客户私钥
    echo 产生客户私钥 private/client.key.pem
    openssl genrsa -aes256 -out private/client.key.pem 2048
    各参数的含义如下所示:
    genrsa 产生RSA密钥命令。
    -aes256 使用AES算法(256位密钥)对产生的私钥加密。可选算法包括DES、DESede、
    IDEA和AES。
    -out 输出路径,这里指private/client.key.pem。 这里的参数2048,指RSA密钥长度位数,默认长度为512位。 上述命令执行结果,如图10-27所示。
    图10-27 产生客户密钥
    这时我们需要输入客户证书密码“123456”。
    完成客户证书密钥构建后,我们需要产生客户证书签发申请。完整命令如代码清单10-21 所示。
    代码清单10-21 生成客户证书签发申请
    echo 生成客户证书签发申请 client.csr
    openssl req -new -key private/client.key.pem -out private/client.csr -subj “/C=CN/ST=BJ/L=BJ/O=zlex/OU=zlex/CN=zlex”
    各参数的含义如下所示:
    req 产生证书签发申请命令。
    -new 表示新请求。
    -key 密钥,这里为private/client.key.pem文件。
    -out 输出路径,这里为private/client.csr文件。
    -subj 指定用户信息,这里使用“zlex”作为用户名。 上述命令执行结果,如图10-28所示。

    这时我们需要输入客户证书密码“123456”。
    我们已经获得了根证书,可以使用根证书签发客户证书(client.cer)。完整命令如代码清单 10-22所示。
    代码清单10-22 签发客户证书
    echo 签发客户证书 certs/client.cer
    openssl ca -days 3650 -in private/client.csr -out certs/client.cer -cert certs/ca.cer -keyfile private/ca.key.pem
    各参数的含义如下所示:
    ca 签发证书命令。
    -days 表示证书有效期,这里为3650天。
    -in 表示输入文件,这里为private/client.csr。
    -out 表示输出文件,这里为certs/server.cer。
    -cert 表示证书文件,这里为certs/ca.cer。
    -keyfile 表示根证书密钥文件,这里为private/ca.key.pem。 上述命令执行结果,如图10-29所示。
    图10-29 签发客户证书

    这时我们需要输入客户证书密码“123456”,并同意签发证书。
    最后,我们需要将获得客户证书转化Java语言可以识别的PKCS#12编码格式。完整命令如 代码清单10-23所示。
    代码清单10-23 客户证书转换
    echo 客户证书转换 certs/client.p12
    openssl pkcs12 -export -inkey private/client.key.pem -in certs/client.cer -out certs/client.p12
    各参数的含义如下所示:
    pkcs12 PKCS#12编码格式证书命令。
    -export 表示导出证书。
    -clcerts 表示仅导出客户证书。
    -inkey 表示输入密钥,这里为private/client.key.pem。 -in 表示输入文件,这里为certs/client.cer。
    -out 表示输出文件,这里为certs/client.p12。 上述命令执行结果,如图10-30所示。
    图10-30 客户证书转换
    这时我们需要输入客户证书密码“123456”。
    至此,我们完成了双向认证的所需的全部证书。我们将在后续章节中介绍如何构建基于双 向认证的网络应用。

  2. mkdir certs
    mkdir newcerts
    mkdir private
    mkdir crl

    openssl rand -out private/.rand 1000
    openssl genrsa -aes256 -out private/ca.key.pem 2048
    openssl req -new -key private/ca.key.pem -out private/ca.csr -subj “/C=CN/ST=BJ/L=BJ/O=tony/OU=tony/CN=*.tony.org”
    openssl x509 -req -days 10000 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in private/ca.csr -out certs/ca.cer
    openssl pkcs12 -export -cacerts -inkey private/ca.key.pem -in certs/ca.cer -out certs/ca.p12

    openssl genrsa -aes256 -out private/server.key.pem 2048
    openssl req -new -key private/server.key.pem -out private/server.csr -subj “/C=CN/ST=BJ/L=BJ/O=tony/OU=tony/CN=www.tony.org”
    openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certs/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.cer
    openssl pkcs12 -export -clcerts -inkey private/server.key.pem -in certs/server.cer -out certs/server.p12

    openssl genrsa -aes256 -out private/client.key.pem 2048

    openssl req -new -key private/client.key.pem -out private/client.csr -subj “/C=CN/ST=BJ/L=BJ/O=tony/OU=tony/CN=tony”
    openssl ca -days 3650 -in private/client.csr -out certs/client.cer -cert certs/ca.cer -keyfile private/ca.key.pem
    openssl pkcs12 -export -inkey private/client.key.pem -in certs/client.cer -out certs/client.p12

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: