Glassfish v2 在安装的时候会自动生成一个自签名证书存放在:
$glassfish_home/domain/domain1/config/keystore.jks 文件中
其中cacert.jks作为truststore库文件,truststore是用来存储可信的客户端的证书。
- 使用上面描述的方法生成一个服务器端使用的个人数字证书:glassfishsrv.pk12
- 修改glassfish证书库keystore.jks访问密码,初始密码是:changeit
停掉服务器: ./asadmin stop-domain domain1
执行命令: ./asadmin change-master-password --savemasterpassword=true
系统会提示你输入新的密码并确认输入。
- 删除glassfish 自带的证书:
Keytool –delete –alias s1as –keystore keystopre.jks –storepass <xxx>
其中<xxx>是keystore密码,未修改之前是changeit,修改之后就是step2输入的新密码。
删除后可用命令 keytool -list -rfc -keystore keystore.jks查看里面的证书是否还存在,如果空了说明删除成功。
- 导入testCA签发的服务器证书
首先学习下security相关的各种文件的格式和作用:
各语言需要的证书格式并不一致,比如说Java我们采用jks,.Net采用pfx和cer,Php则采用pem和cer;本文会对Security证书相关各类文件格式进行一个汇总,并描述各种格式的适用场景;主要分成两类,其一为密钥库文件格式、其二为证书文件格式;
密钥库文件格式【Keystore】
格式 | 扩展名 | 描述 | 特点 |
JKS | .jks/.ks | 【Java Keystore】密钥库的Java实现版本,provider为SUN | 密钥库和私钥用不同的密码进行保护 |
JCEKS | .jce | 【JCE Keystore】密钥库的JCE实现版本,provider为SUN JCE | 相对于JKS安全级别更高,保护Keystore 私钥时采用TripleDES |
PKCS12 | .p12/.pfx | 【PKCS #12】个人信息交换语法标准 | 1、包含私钥、公钥及其证书 |
BKS | .bks | 【Bouncycastle Keystore】密钥库的BC实现版本,provider为BC | 基于JCE实现 |
UBER | .ubr | 【Bouncycastle UBER Keystore】密钥库的BC更安全实现版本,provider为BC |
|
证书文件格式【Certificate】
格式 | 扩展名 | 描述 | 特点 |
DER | .cer/.crt/.rsa | 【ASN .1 DER】用于存放证书 | 不含私钥、二进制 |
PKCS7 | .p7b/.p7r | 【PKCS #7】加密信息语法标准 | 1、p7b以树状展示证书链,不含私钥 |
CMS | .p7c/.p7m/.p7s | 【Cryptographic Message Syntax】 | 1、p7c只保存证书 |
PEM | .pem | 【Printable Encoded Message】 | 1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样广泛运用于密钥管理 |
PKCS10 | .p10/.csr | 【PKCS #10】公钥加密标准【Certificate Signing Request】 | 1、证书签名请求文件 |
SPC | .pvk/.spc | 【Software Publishing Certificate】 | 微软公司特有的双证书文件格式,经常用于代码签名,其中 |
由于上面使用openssl生成的个人数字证书,里面包含私钥,证书(证书中包含公钥)和签发证书的CA的证书,这些都包括在glassfishsrv.pk12文件中。Keytool没有命令支持直接把pk12/pfx文件导入keystore.jks库中。到XWSS下载页面下载pkcs12import的工具包,解压后里面的pkcs12import.jar放到类路径中,执行如下命令将pk12种信息导入keystore.jks:
pkcs12import –file glassfishsrv.pk12 –alias slas –keystore keystore.jks –storepass <xxx>
-pass <exp_password>
其中<xxx>是keystore.jks的访问密码,<exp_password>是生成pkcs12文件时候输入的密码。
完成后可以用
keytool -list -v -keystore keystore.jks
查看密钥库中的证书详细信息是否是新导入的pk12中的信息。
参考资料:
http://weblogs.java.net/blog/kalali/archive/2007/08/how_to_have_you.html
http://blogs.sun.com/enterprisetechtips/entry/using_ssl_with_glassfish_v2