共计 3570 个字符,预计需要花费 9 分钟才能阅读完成。
证书存在服务器端,用户通过浏览器访问时,需要证书上下载保存到本地,表示信任服务器。同样浏览器中的证书也需要保存到服务器的证书库中,表明当前浏览器的证书是可信的。
Keytool 是一个 Java 数据证书的管理工具,Keytool 将密钥(key)和证书(certificates)存在一个称为 keystore 的文件中。在 keystore 里,包含两种数据:密钥实现(Key entity)– 密钥(secret key)又或者是私钥和配对公钥(采用非对称加密),可信任的证书实体(trusted certificate entries)- 只包含公钥。
第一步:为服务器生成密钥(包含密钥实体和可信任的证书实体两部分)
使用 keytool 为 tomcat 生成密钥,如果目标机器的域名 ”localhost”, keystore 文件存放位置
########################################################
例:
linuxidc@0718:apache-tomcat-6.0.41$ keytool -genkey -validity 36000 -alias tomcat -keyalg RSA -keystore keystore/tomcat.keystore
输入 keystore 密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:liqing
您的组织单位名称是什么?
[Unknown]:test
您的组织名称是什么?
[Unknown]:test
您所在的城市或区域名称是什么?
[Unknown]:beijing
您所在的州或省份名称是什么?
[Unknown]:beijing
该单位的两字母国家代码是什么
[Unknown]:zh
CN=liqing, OU=test, O=test, L=beijing, ST=beijing, C=zh 正确吗?
[否]:y
输入的主密码
(如果和 keystore 密码相同,按回车):
linuxidc@0718:apache-tomcat-6.0.41$
########################################################
如果 tomcat 所在服务器的域名不是 ”localhost”, 应改成对应的域名,如“www.baidu.com”
-genkey 表示生成密钥
-validity 指定有效期,单位天,这里是 36000 天
-alias 指定密钥别名,这里是 tomcat
-keyalg 指定密钥算法,这里是 RSA
-keypass 指定密钥别名密码
-keysize 指定密钥长度字节数,如 1024
-keystore 指定密钥文件存储位置和文件名
第二步:为客户端生成密钥
keytool -genkey 命令默认是生成 keystore 文件,但是为了将证书大得导入到 IE 和 Firefox,用 storetype 指定文件格式为 PKCS12
########################################################
例:
linuxidc@0718:apache-tomcat-6.0.41$ keytool -genkey -v -alias myKey -keyalg RSA -storetype PKCS12 -keystore keystore/myclient.p12 -dname “CN=MyKey,OU=cn,O=cn,L=cn,ST=cn,C=cn” -storepass 123456 -keypass 123456
正在为以下对象生成 1,024 位 RSA 密钥对和自签名证书 (SHA1withRSA)(有效期为 90 天):
CN=MyKey, OU=cn, O=cn, L=cn, ST=cn, C=cn
[正在存储 keystore/myclient.p12]
linuxidc@0718:apache-tomcat-6.0.41$
########################################################
之后,把 myclient.p12 证书导入到浏览器
第三步:提取客户端证书的公钥
只是有了密钥库文件还不行,还需要一个证书文件。证书文件才是直接提供给外界使用的公钥凭证。将客户端密钥库文件的公钥导出到证书文件中。
########################################################
例:
linuxidc@0718:apache-tomcat-6.0.41$ keytool -export -alias myKey -keystore keystore/myclient.p12 -storetype PKCS12 -rfc -file keystore/myclient.cer
输入 keystore 密码:
保存在文件中的认证
linuxidc@0718:apache-tomcat-6.0.41$
# 密码输入第二步设置密码:123456
########################################################
-export 将别名指定的密钥导出到证书文件
-keystore 指定 keystore 文件
-alias 需要导出的别名
-file 指向导出路径和证书文件名
-rfc 以文本格式输出,也就是以 BASE64 编码输出
由于是双向 SSL 认证,服务器必须要有客户端的公钥,因此,需要将上面的客户端证书文件(实际应用中,这个证书文件同 CA 认证中心生成提供)导入服务器证书中。
########################################################
例:
linuxidc@0718:apache-tomcat-6.0.41$ keytool -import -v -file keystore/myclient.cer -keystore keystore/tomcat.keystore
输入 keystore 密码:
所有者:CN=MyKey, OU=cn, O=cn, L=cn, ST=cn, C=cn
签发人:CN=MyKey, OU=cn, O=cn, L=cn, ST=cn, C=cn
序列号:5541e6db
有效期: Thu Apr 30 16:24:59 CST 2015 至 Wed Jul 29 16:24:59 CST 2015
证书指纹:
MD5:83:4C:E9:3E:EC:40:BB:8D:BC:7F:95:04:C9:35:31:F1
SHA1:8C:A4:8E:A5:D1:3B:AD:D2:67:C9:1D:74:8B:E9:ED:70:6A:16:6C:58
签名算法名称:SHA1withRSA
版本: 3
信任这个认证?[否]:y
认证已添加至 keystore 中
[正在存储 keystore/tomcat.keystore]
linuxidc@0718:apache-tomcat-6.0.41$
# 密码输入第二步设置密码:123456
########################################################
通过 list 命令查看服务器的证书库,我们可以看到两条记录,一个服务器的证书,一个是受創作的客户端证书:
keytool -list -v -keystore keystore/tomcat.keystore -storepass 123456
第四步:配置 tomcat 服务器
打开 tomcat 主目录下的 conf/server.xml, 找到下面几行,去掉修改为:
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”true” sslProtocol=”TLS”
keystoreFile=”/home/ccdtlinuxidc/workspace/Servers/apache-tomcat-6.0.41/keystore/tomcat.keystore” keystorePass=”123456″
truststoreFile=”/home/ccdtlinuxidc/workspace/Servers/apache-tomcat-6.0.41/keystore/tomcat.keystore” keystorePass=”123456″ />
第五步:导入客户端证书
将 myclient.p12 证书导入浏览器
第六步:重启 tomcat 服务
bin/shutdown.sh
bin/startup.sh
在浏览器地址栏中输入 https://localhost:8443/ 便可访问
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-09/135132.htm