近期公司列出一大堆的東西,其中包括https,啥也不想說,大家是沒法理解的苦逼的個人html
本文不是雙向認證, 雙向認證須要讓客戶端信任本身生成的證書,有點相似登陸銀行網站的情,若是想知道雙向認證的同志能夠點擊這裏。java
關於https這些通道能夠去百度Google其原理,不廢話,自動生成祕鑰,須要使用jdk自帶的命令keytool。關於keytool的使用請查看:這裏或者這裏,我這裏簡單的貼一下使用方式web
經常使用命令:算法
(注:生成證書時,CN要和服務器的域名相同,若是在本地測試,則使用localhost)sql
keytool -genkey -alias "tomcat" -keyalg "RSA" -keystore "d:\mykeystore" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass "changeit" -storepass -validity 180apache
參數說明:tomcat
-genkey表示要建立一個新的密鑰安全
-dname表示密鑰的Distinguished Names,服務器
CN=commonNameapp
OU=organizationUnit
O=organizationName
L=localityName
S=stateName
C=country
Distinguished Names代表了密鑰的發行者身份
-keyalg使用加密的算法,這裏是RSA
-alias密鑰的別名
-keypass私有密鑰的密碼,這裏設置爲changeit
-keystore 密鑰保存在D:盤目錄下的mykeystore文件中
-storepass 存取密碼,這裏設置爲changeit,這個密碼提供系統從mykeystore文件中將信息取出
-validity該密鑰的有效期爲 180天 (默認爲90天)
刪除
keytool -delete -alias catest -keystore d:\mykeystore
查看
keytool -list
-keysto
re
d:\mykeystore
1.服務器中生成證書:(注:生成證書時,CN要和服務器的域名相同,若是在本地測試,則使用localhost)
keytool -genkey -alias "tomcat" -keyalg "RSA" -keystore "d:\mykeystore " -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"-keypass "changeit" -storepass "changeit"
2.導出證書,由客戶端安裝:
keytool -export -alias tomcat -keystore d:\mykeystore -file d:\mycerts.cer -storepass "changeit"
3.客戶端配置:爲客戶端的JVM導入密鑰(將服務器下發的證書導入到JVM中)
keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts " -file d:\mycerts.cer(這裏是證書生成的路徑,不是祕鑰,並且後續配置的是祕鑰而不是這個證書,不要搞混了) -storepass "changeit"
以後能夠看到生成了 catest.cer 文件,以後導入用,keytool的操做就完成了.
若是是在eclipse上面,那麼找到eclipse的service(若是不是,找到tomcat下面的server.xml文件),找到server.xml並打開:
配置以下:
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" keystoreFile="d:\catest.key(這裏是第一步生成的祕鑰位置)" keystorePass="zuecun(這裏是祕鑰的密碼)" maxThreads="25" port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS"/>
若是還有其餘的8443端口直接註釋掉
接着找到web.xml(與server.xml在同一個目錄下)並打開:
在<welcome-file-list>後面配置:
<security-constraint> <web-resource-collection> <web-resource-name>securedapp</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee><!-- 若是你但願關閉 SSL ,只須要將 CONFIDENTIAL 改成 NONE 便可。 --> </user-data-constraint> </security-constraint>
而後啓動服務器,直接訪問會自動跳轉到你配置好的https端口爲8443,注意的是,你這裏的證書本身建立出來的沒有申請,因此會出現不安全的鏈接,固然這是本地測試嘛,
最後一句就是歡迎各路大神丟磚或提意見,謝謝~~~