最近研究了下https,https需要相關證書;可以利用jdk自帶的工具自己生成證書蜘犁,也可以向專門機構申請證書。
區(qū)別好像就是用瀏覽器訪問https的網站時止邮,自己生成的證書不會被瀏覽器信任这橙,在瀏覽器左上角地址欄“https://”有個紅色的斜杠;專門機構申請的證書沒有导披。我暫時還沒發(fā)現(xiàn)其它的區(qū)別析恋。
2017年后蘋果強制使用https,這時證書需要到專門機構(如startssl、沃通CA等)上申請盛卡,不能自己生成助隧,因為自己生成的證書不會被蘋果信任。
下面看下如何自己生成證書滑沧。
一并村、為服務器生成證書
[html]?view plain?copy
keytool?-genkey?-v?-alias?tomcat?-keyalg?RSA?-keystore?/Users/medchitectec/Desktop/cer/tomcat.keystore?-validity?36500??
“tomcat”是別名
“/Users/medchitectec/Desktop/cer/tomcat.keystore?”是生成的證書的存放路徑
"36500"是證書的有效期,單位是”天“
二滓技、為客戶端生成證書
[html]?view plain?copy
keytool?-genkey?-v?-alias?tomcat?-keyalg?RSA?-storetype?PKCS12?-keystore?/Users/medchitectec/Desktop/cer/client.key.p12?-validity?36500??
“tomcat”是別名哩牍,最好和服務端證書一樣
“/Users/medchitectec/Desktop/cer/client.key.p12?”是生成的證書的存放路徑
"36500"是證書的有效期,單位是”天“
三令漂、讓服務器信任客戶端證書
1膝昆、將客戶端證書導出為CER文件
[html]?view plain?copy
keytool?-export?-alias?tomcat?-keystore?/Users/medchitectec/Desktop/cer/client.key.p12?-storetype?PKCS12?-storepass?88888?-rfc?-file?/Users/medchitectec/Desktop/cer/client.key.cer??
tomcat”是別名
“/Users/medchitectec/Desktop/cer/client.key.p12?”是客戶端證書的存放路徑
”88888“是客戶端證書密碼(生成證書時會提示輸入)
“/Users/medchitectec/Desktop/cer/client.key.cer?”是生成的 cer文件的存放路徑
2、將CER文件導入到服務器的證書庫
[html]?view plain?copy
keytool?-import?-v?-file?/Users/medchitectec/Desktop/cer/client.key.cer?-keystore?/Users/medchitectec/Desktop/cer/tomcat.keystore??
“/Users/medchitectec/Desktop/cer/client.key.cer?”上面一步生成的cer文件的存放路徑
“?/Users/medchitectec/Desktop/cer/tomcat.keystore ”服務器證書的存放路徑
3叠必、檢查安裝結果
[html]?view plain?copy
keytool?-list?-keystore?/Users/medchitectec/Desktop/cer/tomcat.keystore??
“?/Users/medchitectec/Desktop/cer/tomcat.keystore?”服務器證書的存放路徑
四荚孵、讓客戶端信任服務器證書
1、把服務器證書導出為CER文件
[html]?view plain?copy
keytool?-keystore?/Users/medchitectec/Desktop/cer/tomcat.keystore?-export?-alias?tomcat?-file?/Users/medchitectec/Desktop/cer/tomcat.cer??
五纬朝、配置Tomcat服務器
[html]?view plain?copy
maxThreads="150"?scheme="https"?secure="true"????
clientAuth="false"?sslProtocol="TLS"????
keystoreFile="D:\\tomcat.keystore"?keystorePass="888888"????
truststoreFile="D:\\tomcat.keystore"?truststorePass="888888"?/>????
clientAuth="false"表示瀏覽器客戶端不需要“客戶端證書”收叶,可以直接訪問
clientAuth="true"表示訪問必須要客戶端證書,在瀏覽器中安裝上面步驟生成的“客戶端證書”即可
六共苛、tomcat同時支持http和https
上線APP還需要支持老版本判没,老版本是http接口,那么這個時候需要同時支持http和https隅茎,配置如下
在server.xml中:
[html]?view plain?copy
connectionTimeout="2000000"???
redirectPort="8443"???
/>??
maxThreads="15000"?scheme="https"?secure="true"??
clientAuth="false"?sslProtocol="TLS"???
keystoreFile="D:\\tomcat.keystor"?keystorePass="888888"????
truststoreFile="D:\\tomcat.keystor"?truststorePass="888888"/>??
這樣“8090”是http的端口澄峰,“8091”是https的接口