首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

配置 Tomcat 和 Wireshark 来获取并解码 SSL 通信 -2 创建一个私钥和证书

配置 Tomcat 和 Wireshark 来获取并解码 SSL 通信 -2 创建一个私钥和证书

创建一个私钥和证书首先我会说明怎样用 openssl 创建一个私钥。开启 Cygwin,执行以下命令:
1
openssl genrsa -des3 -out ./serverkey.pem 2048




它将要求您为生成的 pem 文件提供一个通行短语。我稍后会在此教程中将此通行短语称为 <server key pass phrase>。在提供和核实了这个通行短语之后,这个命令就完成了,一个新的私钥已经生成并存储在文件  serverkey.pem. 里了。
现在执行以下命令(注意:所有命令应在同一行上;此处没有显示在同一行上是受教程模板的限制):
1
2
openssl req -new -x509 -key ./serverkey.pem -out ./servercert.pem -subj
'/C=GB/ST=XX/O="My Org"/CN="Wireshark dissectable Cert"'




这时将有提示需要您提供通行短语,您输入先前选择的 <server key pass phrase> 即可。这样就会生成一个服务器证书,存储在 servercert.pem 中,与您先前生成的私钥保持一致。
将证书转换为 JKS keystore很不幸,上一步生成的服务器证书不是 Tomcat 所要求的格式,所以您必须将其转换为 JKS keystore 形式。第一步您先要执行以下命令(在 Cygwin 中运行)将其转换为 PKCS12 格式:
1
2
openssl pkcs12 -export -in ./servercert.pem -inkey ./serverkey.pem  
-certfile ./servercert.pem -out ./servercert.p12 -name "cert-name"




这时又会提示您输入通行短语,您需要输入 <server key            pass phrase>。然后会提示您再输入一个新的通行短语,本教程后面将其称为 <server p12 pass phrase>。在输入和核实了新的通行短语之后,该命令就完成了,新的文件 servercert.p12 也将生成完毕。
然后,我们利用 Jeffy 发行版中的工具来把这个证书移动到 JKS keystore。不同版本的 Jeffy 可能将这个类放到不同的 jar 文件中,甚至是在发行版的不同的数据包中。在 Jetty 6.1.21 发行版中,所需的类被放在 org.mortbay.jetty.security 包的主 jetty-6.1.21 jar 中。需要运行的命令(假设这个 jar 文件位于当前目录)如下所示:
1
2
java -classpath ./jetty-6.1.21.jar org.mortbay.jetty.security.PKCS12Import
./server.p12 ./dissectable.keystore




它首先会提示您输入 Keystore 的通行短语,就是您之前选择的 <server            p12 pass phrase>。然后会要求您为新的 Keystore 选择一个新的通行短语。我将在本教程中称其为 <server jks pass phrase>。注意:因为不会要求您确认这个通行短语,所以请务必正确输入。
注意:如果您使用的不是同一个版本的 Jetty,您可能会发现 PKCS12Import class 在不同的 jar 文件中,甚至在不同的数据包下。
解除对私钥的保护使用 openssl 的最后一步工作就是删除当前用于保护您的私钥的通行短语。只有完成了这一步,Wireshark 才能正确读取 key 文件。在 cygwin 中,下列命令能够从 key 文件中移除通行短语保护:
1
openssl rsa –in ./serverkey.pem –out ./open-private-key.pem




这个命令将会提示您输入通行短语。您应输入之前选择的 <server key pass phrase>。此命令会生成一个新的文件 open-private-key.pem,它包含一个您的私钥的未受保护的副本。
返回列表