证书生成
一、生成服务器端证书
1 .jks文件(tomcat引用文件)数字证书库
keytool –genkey
–keyalg RSA
–dname
"cn=服务器名,
ou=中国未来网络,
o=CDN,
l=南京,
st=江苏,
c=cn"
-alias 别名
-keypass 密码
-keystore 证书库名.jks-storepass 密码
-validity 3650
说明: 利用密钥和证书用具keytool工具生成证书,连贯书写命令不要中间回车空行
参数说明: -keyalg:算法、-dname:唯一判别名、cn:服务器名(一定要设置为域名地址,例如IP地址)、ou:组织单位名、o:组织名、l:城市名、st:省/市/自治区名称、c:国家双字母代码、-alias:别名、–keypass:密码、-keystore:文件名、-validity:有效时间天为单位。
详细参数说明:请在命令行中输入keytool –genkey –help 帮助查询
重要配置: 密码、别名(-alias)、cn的值为域名
命令举例: keytool -genkey -keyalg RSA-dname "cn=192.168.28.211,ou=fnic,o=cdn,l=nanjing,st=jiangsu,c=cn"-alias server -keypass asd123 -keystore server.jks -storepass asd123 -validity3650
(连贯书写)
2 .cer 文件(浏览器必须安装的服务端文件)
keytool -keystore 证书库.jks-export -alias 别名 -storepass 密码 -file 证书名.cer
命令举例:keytool -keystore server.jks -export -alias server-storepass asd123 -file server.cer
(连贯书写)
二、生成客户端证书
1 .p12文件(双向认证时安装文件)
keytool -genkey -keyalg 算法 -dname"cn=服务器名,ou=中国未来网络,o= CDN,l=南京,st=江苏,c=cn" -alias 别名 -storetype 密钥库类型 -keypass 密码 -keystore 证书名.p12 -storepass 密码 -validity 有效天数
参数说明:同服务端证书参数说明
命令举例:keytool -genkey -keyalg RSA -dname "cn=192.168.28.211,ou=fnic,o=cdn,l=nanjing,st=jiangsu,c=cn" -alias custom -storetype PKCS12 -keypass asd123-keystore custom.p12 -storepass asd123 -validity 3650
(连贯书写)
2 .cer文件(为了导入密钥库过度的文件)
keytool -export -alias 别名 -file cer证书名.cer-keystore p12证书名.p12-storepass 密码 –storetype 密钥类型输出样式
命令举例: keytool -export -alias custom -file custom.cer -keystore custom.p12 -storepass asd123 -storetypePKCS12 -rfc
(连贯书写)
三、添加客户端证书到服务器中
命令说明:keytool-import -v -alias 别名 -file cer文件名.cer -keystore 证书库文件名.jks-storepass 密码
命令举例:keytool -import -v -alias custom -file custom.cer -keystore server.jks -storepass asd123
(连贯书写)
根据命令举例完成所有操作总共生成四个文件
server.jks 证书库文件,供tomcat引用
server.cer 浏览器安装该证书到“受信任根证书颁发机构”下
custom.p12 双向认证安装证书到“您的证书”下
custom.cer 过度证书
Tomcat配置
tomcat service.xml , %CATALINA_HOME%/CONF/service.xml
解开注释或者添加代码
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:/server.jks" keystorePass="password"
truststoreFile="D:/server.jks" truststorePass="password"
/>
说明:keystoreFile 服务端证书库文件路径、keystorePass 密码、clientAuth 设置双向认证还是单向认证,clientAuth="true"表示双向认证,clientAuth="false"表示单向认证
web.xml文件<web-app></web-app>中添加强制使用htmls代码:
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>