借助keytool实现ssl单向认证

一、生成密钥库和证书

可参考以下密钥生成脚本,根据实际情况做必要的修改,其中需要注意的是:服务端的密钥库参数“CN”必须与服务端的IP地址相同,否则会报错。
 
1、生成服务器证书库
keytool -validity  365 -genkey -v -alias server -keyalg RSA -keystore /path/server.keystore -dname  " CN=server_ip,OU=Demo1,O=Demo,L=ChaoYang,ST=BeiJing,c=CN " -storepass  123456 -keypass  123456
 
2、从服务器证书库中导出服务器证书
keytool -export -v -alias server -keystore /path/server.keystore -storepass 123456 -rfc -file /path/server.cer
二. 拷贝服务器证书(CA)到OS相应目录中
 
# cp server.crt /usr/local/share/ca-certificates/
# update-ca-certificates
报warning: 

"perl: warning: Setting locale failed."

echo "export LC_ALL=C" >> /root/.bashrc
然后执行一下:
source /root/.bashrc
 
三、 编辑tomcat配置文件
 
cat $TOMCAT_HOME/conf/server.xml
 
<Connector port="8080" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" keystoreFile="/path/server.keystore" keystorePass="123456" truststoreFile="/path/server.keystore" truststorePass="123456"/>
 
四、 测试ssl
 
Env: Ubuntu 12.04, Tomcat 6
#wget https://localhost:8080
 
报错
With wget : OpenSSL: error:14077438:SSL routines: SSL23_GET_ SERV
 
cat $TOMCAT_HOME/conf/server.xml
 
<Connector port="8080" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" keystoreFile="/path/server.keystore" keystorePass="123456" truststoreFile="/path/server.keystore" truststorePass="123456" sslProtocol="TLS" ciphers="SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"/>

备注:
keystoreFile:指定服务器密钥库,可以配置成绝对路径,如“D:/key/server.keystore”,本例中是在Tomcat目录中创建了一个名称为key的文件夹,仅供参考。
keystorePass:密钥库生成时的密码
truststoreFile:受信任密钥库,和密钥库相同即可
truststorePass:受信任密钥库密码

你可能感兴趣的:(ssl,keystool)