`
thinkerAndThinker
  • 浏览: 284634 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SSL通关之keytool 命令(二)

 
阅读更多

在上一篇博客中,说到SSL的第一步就是要创建证书。(或者向第三方购买)

PS:最终上线的产品,证书会是向第三方认证机构购买的,但在开发过程中,是自己创建的。

创建证书的常用工具是keytool,这个是jdk自带的工具,只要电脑上装了jdk(并且环境变量里配置好了)就可以使用。

linux系统不能用keytool,要用openssl。

本篇所列的命令为keytool命令。

 

首先,列出参考文章:

1、创建证书过程参考:

http://wenku.baidu.com/link?url=uWTSct_uZYrcbG0RPpWTZ4Lmhz177Uv4xlMyBw6554YkzCG00GmKDscP36LSFDb3vdhpq2EW4VHUUzkyLjQdmepZbBpp29QxsAYzmRfJe9O

http://www.blogjava.net/icewee/archive/2012/06/04/379947.html

http://czj4451.iteye.com/blog/1487684

2、keytool命令解释参考:

http://blog.csdn.net/ygc87/article/details/7620942

http://www.cnblogs.com/benio/archive/2010/09/15/1826990.html(非常详细)

 

下面,简单介绍几个常用命令的说明:

keytool常用命令 
-alias       产生别名 
-keystore    指定密钥库的名称(就像数据库一样的证书库,可以有很多个证书,cacerts这个文件是jre自带的, 
             你也可以使用其它文件名字,如果没有这个文件名字,它会创建这样一个) 
-storepass   指定密钥库的密码 
-keypass     指定别名条目的密码 
-list        显示密钥库中的证书信息 
-v           显示密钥库中的证书详细信息 
-export      将别名指定的证书导出到文件 
-file        参数指定导出到文件的文件名 
-delete      删除密钥库中某条目 
-import      将已签名数字证书导入密钥库 
-keypasswd   修改密钥库中指定条目口令 
-dname       指定证书拥有者信息 
-keyalg      指定密钥的算法 
-validity    指定创建的证书有效期多少天 
-keysize     指定密钥长度 

接下来,进入本文的重点——keytool命令创建ssl证书:

PS:仅仅用下面的命令创建bks是不能成功的,因为缺少一个bks支持的jar,具体的解决办法可以百度一下,网上很多。很简单,就是下载一个jar放到jdk的两个目录下,然后修改对于的两个配置文件就好了。

一、单向验证成功:

1、生产服务器端证书:
keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore D:\ssl\bks\server.jks -dname "CN=10.100.100.24,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456
2、导出证书
keytool -exportcert -v -alias server -keystore D:\ssl\bks\server.jks -storepass 123456 -rfc -file D:\ssl\bks\server.cert
3、生产Android可用的客户端证书

keytool -importcert -keystore D:\ssl\bks\client.bks -file D:\ssl\bks\server.cert -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider  -storepass 123456

 

PS:ios单项验证不需要证书


二、同一个server,两份不同的client证书(一份bks,Android用的,一份是jks,ios用的),双向认证成功:

1、创建server端证书:

keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore D:\ssl\server.keystore -dname "CN=10.100.100.24,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456

 

2、创建Android客户端证书:(双向(Android)验证成功)

最终要给客户端用的证书是:client-bks-trust.bks、client-bks.bks 


keytool -validity 365 -genkeypair -v -alias client-bks -keyalg RSA -storetype BKS -keystore D:\ssl\client-bks.bks -dname "CN=client,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


keytool -export -v -alias client-bks -keystore D:\ssl\client-bks.bks -storetype BKS -storepass 123456 -rfc -file D:\ssl\client-bks.crt


keytool -export -v -alias server -keystore D:\ssl\server.keystore -storepass 123456 -rfc -file D:\ssl\server.crt


keytool -importcert -keystore D:\ssl\client-bks-trust.bks -file D:\ssl\server.crt -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider  -storepass 123456


keytool -import -v -alias client-bks -file D:\ssl\client-bks.crt -keystore D:\ssl\server.keystore -storepass 123456


3、创建ios客户端证书(ios:双向验证成功)

最终发给ios客户端的证书是:client-ios.truststore(该格式也可以为.p12,但此处的文件与下面第一行生成的client-ios.p12文件是不同的文件)

 

keytool -validity 365 -genkeypair -v -alias client-ios -keyalg RSA -storetype PKCS12 -keystore D:\ssl\client-ios.p12 -dname "CN=client-ios,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


keytool -export -v -alias client-ios -keystore D:\ssl\client-ios.p12 -storetype PKCS12 -storepass 123456 -rfc -file D:\ssl\client-ios.cer -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass 123456


keytool -export -v -alias server -keystore D:\ssl\server.keystore -storepass 123456 -rfc -file D:\ssl\server-ios.cer


keytool -import -v -alias server -file D:\ssl\server-ios.cer -keystore D:\ssl\client-ios.truststore -storepass 123456


keytool -import -v -alias client-ios -file D:\ssl\client-ios.cer -keystore D:\ssl\server.keystore -storepass 123456


三、(也可以用java代码测试)

ios-jks:双向成功

 

keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore D:\ssl\ios-jks\server.keystore -dname "CN=10.100.100.24,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:\ssl\ios-jks\client.p12 -dname "CN=client,OU=test,O=test,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456


keytool -export -v -alias client -keystore D:\ssl\ios-jks\client.p12 -storetype PKCS12 -storepass 123456 -rfc -file D:\ssl\ios-jks\client.cer -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass 123456


keytool -export -v -alias server -keystore D:\ssl\ios-jks\server.keystore -storepass 123456 -rfc -file D:\ssl\ios-jks\server.cer


keytool -import -v -alias server -file D:\ssl\ios-jks\server.cer -keystore D:\ssl\ios-jks\client.truststore -storepass 123456


keytool -import -v -alias client -file D:\ssl\ios-jks\client.cer -keystore D:\ssl\ios-jks\server.keystore -storepass 123456

分享到:
评论

相关推荐

    用keytool生成证书,双向SSL认证配置的方法

    用keytool生成证书,双向SSL认证配置的方法,以Tomcat举例。包含步骤:一、为服务器生成证书;二、为客户端生成证书;三、让服务器信任客户端证书;四、让客户端信任服务器证书。

    java中keytool命令的使用

    java中关于SSL的证书和密钥的形成,关于keytool命令行代码的解释!

    SSL + WEBLOGIC 8.1 + KEYTOOL建立单向SSL

    ### SSL + WEBLOGIC 8.1 + KEYTOOL 建立单向SSL #### 一、单向SSL连接概述 单向SSL(Secure Sockets Layer)是一种用于保护网络通信安全的技术,它通过加密数据传输来保障信息的机密性和完整性。与双向SSL不同的是...

    Linux命令keytool命令 – 密钥和证书管理工具.docx

    `keytool`是Java开发工具包...了解和熟练使用`keytool`命令对于管理Java和Linux环境中的安全性至关重要,尤其是涉及SSL/TLS通信和数字签名等场景。通过正确配置和管理密钥库,可以确保网络通信的安全性和数据的完整性。

    keytool建立双向认证

    标题中的“keytool建立双向认证”指的是在Java环境中使用keytool工具进行SSL/TLS协议的双向身份认证(Mutual TLS)配置。双向认证是一种安全通信协议,它要求客户端和服务器都提供身份验证,以确保双方的身份是可信...

    Keytool与数字证书

    keytool -import -trustcacerts -keystore D:\gm_mail_ssl\gmmail.jks -alias mycert -file D:\gm_mail_ssl\mycert.cer ``` - **参数说明**: - `-import`:表示导入操作。 - `-trustcacerts`:信任证书。 - `-...

    Linux下TOMCAT SSL支持设置

    在 Linux 环境中设置 Tomcat 支持 SSL,使用 Keytool 生成安全密钥。本文档总结了在 CentOS release 5.7 系统上使用 JDK 1.6.0_30 和 Tomcat 6.0.26 的设置过程。 一、生成认证文件 使用 Keytool 生成服务器密钥,...

    ssl_server_client_poc:了解SSLServerSocket,SSLSocket,Keytool,TrustStore等

    ssl_server_client_poc 了解SSLServerSocket,SSLSocket,Keytool,TrustStore等生成Java密钥库和密钥对keytool -genkey -alias mydomain -keyalg RSA -keystore sample.jks -storepass 123456 为现有的Java密钥库...

    OpenSSL生成的ssl证书

    **OpenSSL生成的ssl证书** 在互联网安全领域,SSL(Secure Socket Layer)证书是保障网站数据传输安全的重要工具。OpenSSL是一个开源的库,包含了各种加密算法,它提供了生成SSL证书的功能。本教程将详细介绍如何...

    keytool图形化工具

    在Java开发和部署环境中,尤其是在涉及到SSL/TLS安全通信、签名和验证应用程序时,`keytool`和`KeyToolGui`扮演着至关重要的角色。 1. **什么是KeyTool?** `keytool`是Java Development Kit (JDK)自带的一个...

    KeyTool

    4. **导入证书**:如果需要将其他源的证书导入密钥库,可以使用`keytool -importcert -alias alias_name -file imported_certificate.crt -keystore keystore_name.jks`命令。 5. **查看密钥库信息**:`keytool -...

    https证书生成工具(openssl和jre(自带keytool)) for windows.rar

    - **生成自签名证书**:可以使用`keytool -genkeypair`命令生成自签名证书,例如`keytool -genkeypair -alias mycert -keyalg RSA -keystore keystore.jks`,这会在keystore.jks中创建一个名为mycert的证书。...

    KeyTool_GUI

    5. **操作命令**:KeyTool支持多种命令,如`keytool -genkeypair`用于生成密钥对,`keytool -importcert`用于导入证书,`keytool -list`用于查看密钥库内容等。 6. **GUI界面的优势**:图形界面使这些操作变得更加...

    java keytool使用例子

    使用Keytool生成自签名证书和密钥对的命令如下: ``` keytool -genkeypair -alias <别名> -keyalg RSA -keystore <密钥库文件名> -keysize <密钥长度> ``` 其中,`<别名>`是证书的唯一标识,`<密钥库文件名>`是...

    KeyTool 工具生成X.509证书

    KeyTool是Java Development Kit (JDK)的一部分,它提供了一系列命令来创建、查看、导出、导入和管理密钥对和证书。下面是一些主要的KeyTool命令: 1. **生成密钥对**:`keytool -genkeypair` 使用此命令,你可以...

    keytool+tomcat配置HTTPS双向证书认证

    以下是在 Windows 系统中使用 Keytool 生成证书的命令: `keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore -validity 36500` 在 Linux 系统中,可以使用以下命令生成证书: `./...

    keytool 加密证书制作

    总的来说,keytool是Java开发者和系统管理员必备的工具之一,理解并熟练使用它可以有效地管理和保护网络安全。深入研究其源码能进一步提升对加密和认证机制的理解。通过批处理脚本自动化证书管理,可以提高工作效率...

    keytoolgui

    7. **SSL配置**:在部署Web应用服务器时,keytoolGUI可以帮助配置服务器的SSL设置,包括加载密钥库和信任库,设置SSL端口等。 在文件`keytool_94999`中,可能包含了keytoolGUI的源代码、编译后的可执行文件、文档...

    keytool查询apk证书指纹.zip

    在提供的"keytool查询apk证书指纹.txt"文件中,应该包含了一次执行`keytool`命令的具体示例或详细步骤。查阅这个文本文件可以让你更深入地理解如何操作。请确保按照文件中的说明进行,以获取正确的证书指纹信息。 ...

Global site tag (gtag.js) - Google Analytics