Glassfish v2 轮换及使用自定义证书

Glassfish v2 替换及使用自定义证书

Glassfish v2 在安装的时候会自动生成一个自签名证书存放在:

$glassfish_home/domain/domain1/config/keystore.jks 文件中

其中cacert.jks作为truststore库文件,truststore是用来存储可信的客户端的证书。

  1. 使用上面描述的方法生成一个服务器端使用的个人数字证书:glassfishsrv.pk12
  2. 修改glassfish证书库keystore.jks访问密码,初始密码是:changeit

停掉服务器: ./asadmin stop-domain domain1

执行命令:   ./asadmin change-master-password --savemasterpassword=true

系统会提示你输入新的密码并确认输入。

  1. 删除glassfish 自带的证书:

Keytool –delete –alias s1as –keystore keystopre.jks –storepass <xxx>

其中<xxx>keystore密码,未修改之前是changeit,修改之后就是step2输入的新密码。

删除后可用命令 keytool -list -rfc -keystore keystore.jks查看里面的证书是否还存在,如果空了说明删除成功。

  1. 导入testCA签发的服务器证书

首先学习下security相关的各种文件的格式和作用:

各语言需要的证书格式并不一致,比如说Java我们采用jks.Net采用pfxcerPhp则采用pemcer;本文会对Security证书相关各类文件格式进行一个汇总,并描述各种格式的适用场景;主要分成两类,其一为密钥库文件格式、其二为证书文件格式;

  密钥库文件格式【Keystore

格式

扩展名

描述

特点

JKS

.jks/.ks

Java Keystore】密钥库的Java实现版本,providerSUN

密钥库和私钥用不同的密码进行保护

JCEKS

.jce

JCE Keystore】密钥库的JCE实现版本,providerSUN JCE

相对于JKS安全级别更高,保护Keystore

私钥时采用TripleDES

PKCS12

.p12/.pfx

PKCS #12】个人信息交换语法标准

1、包含私钥、公钥及其证书
2
、密钥库和私钥用相同密码进行保护

BKS

.bks

Bouncycastle Keystore】密钥库的BC实现版本,providerBC

基于JCE实现

UBER

.ubr

Bouncycastle UBER Keystore】密钥库的BC更安全实现版本,providerBC

 

 

  证书文件格式【Certificate

格式

扩展名

描述

特点

DER

.cer/.crt/.rsa

ASN .1 DER】用于存放证书

不含私钥、二进制

PKCS7

.p7b/.p7r

PKCS #7】加密信息语法标准

1p7b以树状展示证书链,不含私钥
2
p7rCA对证书请求签名的回复,只能用于导入

CMS

.p7c/.p7m/.p7s

Cryptographic Message Syntax

1p7c只保存证书
2
p7msignature with enveloped data
3
p7s:时间戳签名文件

PEM

.pem

Printable Encoded Message

1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样广泛运用于密钥管理
2
ASCII文件
3
、一般基于base 64编码

PKCS10

.p10/.csr

PKCS #10】公钥加密标准【Certificate Signing Request

1、证书签名请求文件
2
ASCII文件
3
CA签名后以p7r文件回复

SPC

.pvk/.spc

Software Publishing Certificate

微软公司特有的双证书文件格式,经常用于代码签名,其中
1
pvk用于保存私钥
2
spc用于保存公钥

 

由于上面使用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中的信息。

 

参考资料:

利用openssl创建一个简单的CA

 

glassfish v2 使用ssl

 

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

 

     Sun Application Server Security Config