在上一篇博客中,说到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认证配置的方法,以Tomcat举例。包含步骤:一、为服务器生成证书;二、为客户端生成证书;三、让服务器信任客户端证书;四、让客户端信任服务器证书。
java中关于SSL的证书和密钥的形成,关于keytool命令行代码的解释!
### SSL + WEBLOGIC 8.1 + KEYTOOL 建立单向SSL #### 一、单向SSL连接概述 单向SSL(Secure Sockets Layer)是一种用于保护网络通信安全的技术,它通过加密数据传输来保障信息的机密性和完整性。与双向SSL不同的是...
`keytool`是Java开发工具包...了解和熟练使用`keytool`命令对于管理Java和Linux环境中的安全性至关重要,尤其是涉及SSL/TLS通信和数字签名等场景。通过正确配置和管理密钥库,可以确保网络通信的安全性和数据的完整性。
标题中的“keytool建立双向认证”指的是在Java环境中使用keytool工具进行SSL/TLS协议的双向身份认证(Mutual TLS)配置。双向认证是一种安全通信协议,它要求客户端和服务器都提供身份验证,以确保双方的身份是可信...
keytool -import -trustcacerts -keystore D:\gm_mail_ssl\gmmail.jks -alias mycert -file D:\gm_mail_ssl\mycert.cer ``` - **参数说明**: - `-import`:表示导入操作。 - `-trustcacerts`:信任证书。 - `-...
在 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等生成Java密钥库和密钥对keytool -genkey -alias mydomain -keyalg RSA -keystore sample.jks -storepass 123456 为现有的Java密钥库...
**OpenSSL生成的ssl证书** 在互联网安全领域,SSL(Secure Socket Layer)证书是保障网站数据传输安全的重要工具。OpenSSL是一个开源的库,包含了各种加密算法,它提供了生成SSL证书的功能。本教程将详细介绍如何...
在Java开发和部署环境中,尤其是在涉及到SSL/TLS安全通信、签名和验证应用程序时,`keytool`和`KeyToolGui`扮演着至关重要的角色。 1. **什么是KeyTool?** `keytool`是Java Development Kit (JDK)自带的一个...
4. **导入证书**:如果需要将其他源的证书导入密钥库,可以使用`keytool -importcert -alias alias_name -file imported_certificate.crt -keystore keystore_name.jks`命令。 5. **查看密钥库信息**:`keytool -...
- **生成自签名证书**:可以使用`keytool -genkeypair`命令生成自签名证书,例如`keytool -genkeypair -alias mycert -keyalg RSA -keystore keystore.jks`,这会在keystore.jks中创建一个名为mycert的证书。...
5. **操作命令**:KeyTool支持多种命令,如`keytool -genkeypair`用于生成密钥对,`keytool -importcert`用于导入证书,`keytool -list`用于查看密钥库内容等。 6. **GUI界面的优势**:图形界面使这些操作变得更加...
使用Keytool生成自签名证书和密钥对的命令如下: ``` keytool -genkeypair -alias <别名> -keyalg RSA -keystore <密钥库文件名> -keysize <密钥长度> ``` 其中,`<别名>`是证书的唯一标识,`<密钥库文件名>`是...
KeyTool是Java Development Kit (JDK)的一部分,它提供了一系列命令来创建、查看、导出、导入和管理密钥对和证书。下面是一些主要的KeyTool命令: 1. **生成密钥对**:`keytool -genkeypair` 使用此命令,你可以...
以下是在 Windows 系统中使用 Keytool 生成证书的命令: `keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore -validity 36500` 在 Linux 系统中,可以使用以下命令生成证书: `./...
总的来说,keytool是Java开发者和系统管理员必备的工具之一,理解并熟练使用它可以有效地管理和保护网络安全。深入研究其源码能进一步提升对加密和认证机制的理解。通过批处理脚本自动化证书管理,可以提高工作效率...
7. **SSL配置**:在部署Web应用服务器时,keytoolGUI可以帮助配置服务器的SSL设置,包括加载密钥库和信任库,设置SSL端口等。 在文件`keytool_94999`中,可能包含了keytoolGUI的源代码、编译后的可执行文件、文档...
在提供的"keytool查询apk证书指纹.txt"文件中,应该包含了一次执行`keytool`命令的具体示例或详细步骤。查阅这个文本文件可以让你更深入地理解如何操作。请确保按照文件中的说明进行,以获取正确的证书指纹信息。 ...