天天看点

java生成Https证书,及证书导入的步骤和过程

Tomcat版本:tomcat-7.0.55

JDK版本: jdk1.6.0

Serve的目录:D:\server\tomcat-7.0.55\

JDK的目录:D:\jdk\jdk1.6.0

说明:

-alias指定别名为casserver;

-keyalg指定RSA算法;

-keypass指定私钥密码;

-keystore指定密钥文件名称为casserver.keystore;

-validity指定有效期为365天。

另外提示输入密匙库口令应与-keypass指定的cas123相同;您的名字与姓氏fron.com是CAS服务器使用的域名(不能是IP,也不能是localhost),其它项随意填。

java生成Https证书,及证书导入的步骤和过程

注意:

服务器上如果有多个JDK,请确认环境变量中的JDK路径为tomcat所使用的JDK,

如果不在环境变量中,也可切换到指定JDK的bin目录下执行命令;提示的输入keystore密码应与-keypass必须与指定的相同,

否则后面tomcat启动会报IO异常(Cannot recover key)。

命令执行成功后Server目录下多出casserver.keystore文件。

java生成Https证书,及证书导入的步骤和过程

keytool -export -alias casserver -storepass cas123 -file casserver.cer -keystore casserver.keystore

-storepass指定私钥为liuqizhi;

-file指定导出证书的文件名为casserver.cer;

-keystore指定之前生成的密钥文件的文件名。

注意:-alias和-storepass必须为生成casserver.keystore密钥文件时所指定的别名和密码,否则证书导出失败

java生成Https证书,及证书导入的步骤和过程
java生成Https证书,及证书导入的步骤和过程

 接下来就是把上面生成的服务器的证书casserver.cer导入到cacerts密钥库文件中(后面的客户端会用到这些)

keytool -import -trustcacerts -alias casserver -storepass cas123 -file casserver.cer –keystore cacerts

java生成Https证书,及证书导入的步骤和过程

命令执行成功后Server目录下多出cacerts文件。

java生成Https证书,及证书导入的步骤和过程

在制作完成密钥文件、证书文件、密钥库文件后即可进行服务端Tomcat的配置。打开$CATALINA_HOME/conf/server.xml

<!--keystoreFile 生成的安全证书的位置--> 

<!--keystorePass设置安全证书的密码-->

<Connector protocol="HTTP/1.1" SSLEnabled="true"

         maxThreads="150" scheme="https" secure="true"

         clientAuth="false"

         sslProtocol="TLS"

         keystoreFile="D:\server\tomcat-7.0.55\casserver.keystore"  

         keystorePass="cas123"   

         port="443"   />

port一般为8443或443,最常用的是443端口(https默认端口),

这样https方式访问的时候可以不加端口号(如:https://sso.demo.com/cas/login);

keystoreFile为tomcat目录下的密钥文件;

keystorePass为私钥密码;truststoreFile为生成的信任文件,

如果此处不指定则默认为$JAVA_HOME/jre/lib/security/cacerts文件;其它属性默认即可。

单向认证的客户端配置只需生成客户端信任文件caserts即可。

首先将服务端生成的证书文件(之前生成的casserver.cer文件)复制到$JAVA_HOME/jre/lib/security下,

然后打开CMD窗口切换到$JAVA_HOME/jre/lib/security下并执行命令:

keytool -import -trustcacerts -alias casclient -storepass changeit -file casserver.cer -keystore cacerts

命令执行成功后JDK目录/jre/lib/security下多出cacerts文件。

TOMCAT修改

tomcat\conf\ server.xml 修改片断

maxThreads="150" scheme="https" secure="true"

clientAuth="false"

sslProtocol="TLS"   

keystoreFile="D:\server\tomcat-7.0.55\casserver.keystore"  

keystorePass="cas123"   

port="443"/>

1)keytool 生成安全证书不能使用IP地址 一律使用域名

2)务必确认客户端程序使用JDK 路径正确 分清楚JDK、JRE

原文参考:https://confluence.atlassian.com/crowd/configuring-an-ssl-certificate-for-microsoft-active-directory-63504388.html

Navigate to the directory in which the Java used by JIRA is installed. If the default JAVA installation is used, then it would be

Run the command below, where <code>server-certificate.crt </code>is the name of the file from your directory server:

<code>keytool</code> will prompt you for a password. The default keystore password is <code>changeit</code>.

When prompted <code>Trust this certificate? [no]:</code> enter <code>yes </code>to confirm the key import:

You may now change 'URL' to use LDAP over SSL (i.e. ldaps://&lt;HOSTNAME&gt;:636/) and use the 'Secure SSL' option when connecting your application to your directory server.

cer和crt都是证书,只是格式不一样。具体参考下面的内容

本至上,X.509证书是一个数字文档,这个文档根据RFC 5280来编码并/或签发。

实际上,“X.509证书”经常被用来指代IETF的PKIX(Public Key Infrastructure)证书和X.509 v3 证书标准中的CRL(Certificate Revocation List)。

首先我们要理解文件的扩展名代表什么。DER、PEM、CRT和CER这些扩展名经常令人困惑。很多人错误地认为这些扩展名可以互相代替。尽管的确有时候有些扩展名是可以互换的,但是最好你能确定证书是如何编码的,进而正确地标识它们。正确地标识证书有助于证书的管理。

.DER = 扩展名DER用于二进制DER编码的证书。这些证书也可以用CER或者CRT作为扩展名。比较合适的说法是“我有一个DER编码的证书”,而不是“我有一个DER证书”。

.PEM = 扩展名PEM用于ASCII(Base64)编码的各种X.509 v3 证书。文件开始由一行"—– BEGIN …“开始。

.CRT = 扩展名CRT用于证书。证书可以是DER编码,也可以是PEM编码。扩展名CER和CRT几乎是同义词。这种情况在各种unix/linux系统中很常见。

CER = CRT证书的微软型式。可以用微软的工具把CRT文件转换为CER文件(CRT和CER必须是相同编码的,DER或者PEM)。扩展名为CER的文件可以被IE识别并作为命令调用微软的cryptoAPI(具体点就是rudll32.exe cryptext.dll, CyrptExtOpenCER),进而弹出一个对话框来导入并/或查看证书内容。

.KEY = 扩展名KEY用于PCSK#8的公钥和私钥。这些公钥和私钥可以是DER编码或者PEM编码。

CRT文件和CER文件只有在使用相同编码的时候才可以安全地相互替代。

本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1964864