keytool 生成证书

利用JDK自带的KeyTool工具实现SSL
SSL就是Secure Socket Layer,是Netscape所研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。如今已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。 
SSL其实就是一种安全协议,位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。 
当然WEB应用中主要是服务器与浏览器之间通过传输的安全, 
这意味着将被发送的数据在一端被翻译成密码,传送出去,然后在另一端解开密码,再进行处理。这是一个双向的过程,也就是浏览器和服务器都需要在发送数据之前对它们进行加密。

SSL协定的另一个重要方面是认证(Authentication)。这就是说,在你开始试图通过一个安全连接与一个web服务器交流的时候,这个服务器会要求你的浏览器出示一组证件,通过“鉴定”的方式来证明这就是你所声明的网站。

在某些情况下,服务器还会要求你的web浏览器的认证书,证明你就是你所说的那个人。这就是所知的“客户认证”,这种双向认证更多地用在商务-对-商务(B2B)交易中。

Java提供相对简单的被称为keytool的命令行工具,可以简单地产生“自己签名”的证书。自己签名的证书只是用户产生的证书,没有正式在大家所熟知的认证权威那里注册过,因此不能确保它的真实性。但却能保证数据传输的安全性。

keytool生产非签发证书 
keytool -genkey -alias website -keyalg RSA -keystore d:\website.keystore 
在此命令中,keytool是JDK自带的产生证书的工具。把RSA运算法则作为主要安全运算法则,这保证了与其它服务器和组件的兼容性。

这个命令会在用户的d:\website.keystore产生一个叫做"website.keystore" 的新文件。你会被要求出示关于这个认证书的一般性信息,如公司,联系人名称,等等。这些信息会显示给那些试图访问你程序里安全网页的用户,以确保这里提供的信息与他们期望的相对应。你会被要求出示密钥(key)密码,也就是这个认证书所特有的密码(与其它的储存在同一个keystore文件里的认证书不同)。你必须在这里使用与keystore密码相同的密码。(目前,keytool会提示你按ENTER键会自动帮你做这些)。

此时你就拥有了一个可以被你的服务器使用的有认证书的keystore文件。

申请签发证书 
自己生产并签名的证书相对用户使不可信的,也是不安全的,所以一般我们需要向证书发放机构去购买证书,或者获取免费证书,下面是正式的申请流程和在Web Server中的配置

1) 生成私钥和公钥对(Keystore) Create a Keystore

keytool -genkey -keyalg rsa -keystore d:\website.keystore -alias website

Keytool 会提示您输入私钥密码、您的姓名(Your name,填单位网址)、您的部门名称、单位名称、所在城市、所在省份和国家缩写(中国填:CN,其他国家填其缩写),单位名称一定要与证明文件上的名称一致,部门名称(OU)可以不填。除国家缩写必须填CN外,其余都可以是英文或中文。请一定要保存好您的私钥和私钥密码。WoTrust不会要求您提供私钥文件!

(2) 生成证书请求文件(CSR) Generate a CSR 
keytool –certreq –file d:\website.csr –keystore d:\website.keystore -alias website 
请把生成的d:\website.csr 文件复制和粘贴到Thawte证书在线申请页面的CSR文本框中,或直接发给WoTrust,请等待1-2个工作日后颁发证书。

(3) 导入签名证书 Import Thawte Codesigning Certificate 
一旦Thawte验证了您的真实身份,将会颁发证书给您。您需要到Thawte网站下载您的证书,请选择 PKCS #7 格式证书(PKCS #7 Certificate Chain),此证书格式含有您的证书和根证书链,Keytool要求此格式证书 ,请把证书保存到您的电脑中。 
请使用如下命令导入您的证书到keystore 中,这里假设您的证书名称为:website.cer,请同时指明详细路径,一旦成功导入证书,请及时备份您的keystore文件:

keytool –import –trustcacerts –keystore d:\website.keystore -alias website -file d:\website.cer

就这样一个被签名过的证书就申请好了。

这两天在给一个网站做SSL的加密,加起来整整占用了我两天的时间,现在终于好了。现在把相关的流程和细节给大家一起分享。

当Tomcat作为独立的Web Servcer运行的时候,可以独立处理SSL请求,这个时候,我们就需要在Tomcat上安装SSL证书,如果Tomcat和Apache联合工作,事实上是作为Apache的一个独立进程来负责JSP页面和Servlet,这个时候,我们就需要将SSL证书安装在Apache上,这点需要先确认好。

Tomcat还有一个特殊的模块:APR(Apache Portable Runtime)是为了提高Tomcat处理静态内容性能,提供的组件,其实就是以Apache2.0为核心的一个http服务。在HTTPS方面,APR和Apache一样采用Openssl,在证书安装部分,会简要说明一下。

1.Tomcat支持Jave Keystore文件格式作为SSL证书存储用途。Java Keystore文件的常见扩展名有.jks和.key。要制作JKS文件,有2种主要方式:

(1) 用JRE自带的Keytool工具。先产生一个新的jks文件,并到处一个csr文件,然后将csr发给CA签名,并将签名后的文件导入jks文件。 
1)生成KeyPair生成密钥对 
keytool -genkey -alias tomcat -keyalg RSA -keystore d:\tomcat.keystore 
2)生成证书签名请求 
keytool –certreq –file tomcat.csr –keystore d:\tomcat.keystore -alias tomcat 
(2) 用openssl工具,制作key和csr文件,将csr发给CA签名得到cer文件,然后将key和cer合并成一个jks文件。(openssl生成证书csr过程略)

2. 把tomcat.csr文件向专门的签名公司申请签名,签名成功后,在负责签名公司的网站上可以下载两份证书,一份是针对你网站的csr文件生成的服务器证书(假设为tomcat.cer),一份是签名公司的中级证书(假设为server.cer),这里要注意一下,有一些网站会提供两张中级证书。 
(1).先导入中级证书server.cer 
keytool -import -keystore d:\tomcat.keystore -trustcacerts -storepass yourpassword -file d:\server.cer 
如果导入成功,cmd里会提示“认证已经添加至keystore中”。

(2).导入服务器证书 
keytool -import -alias tomcat -keystore d:\tomcat.keystore -trustcacerts -storepass yourpassword -file d:\tomcat.cer 
如果导入成功,cmd里会提示“认证回复已安装在keystore中”。

3.配置到tomcat中,因为tomcat版本不同,设定方式也有一点小的区别 
假设keystore的位置为:d:\tomcat.keystore 
Tomcat 5.5的Server.xml 
< Connector port="443" minProcessors="5" maxProcessors="75" 
enableLookups="true" disableUploadTimeout="true" 
acceptCount="100" debug="0" scheme="https" secure="true"; 
clientAuth="false" sslProtocol="TLS" 
keystoreFile="d:\tomcat.keystore" 
keystorePass="yourpassword"/>

Tomcat 6.0的Server.xml 
< Connector port="443" minSpareThreads="5" maxSpareThreads="75" 
enableLookups="true" disableUploadTimeout="true" 
acceptCount="100" maxThreads="200" 
scheme="https" secure="true" SSLEnabled="true" 
clientAuth="false" sslProtocol="TLS" 
keystoreFile="d:\tomcat.keystore" 
keystorePass="yourpassword"/>

转载于:https://my.oschina.net/u/861562/blog/151580

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值