最近開發瀏覽器人臉採集功能,需要使用H5調用攝像頭,發現最新版的谷歌和火狐瀏覽器安全機制不允許通過http協議打開攝像頭,所以自己使用jdk自帶的工具申請了證書配置到tomcat,然後訪問https協議訪問tomcat發佈的服務
1.使用jdk自帶的keytool生成證書keystore
1.1打開cmd窗口後 cd到jdk目錄bin目錄
1.2輸入 keytool -genkey -alias test01 -keyalg RSA -keystore F:\test01.keystore
1.3 按照提示一步步操作就行,第一步輸入證書口令
1.4 到了這裏確認是否正確,正確輸入y,否則請輸入n
輸入y後輸入祕鑰口令,我都是設置和祕鑰庫一樣的口令
1.5完成後查看指定的keystore目錄已經生成了test01.keystore
2.把證書配置到tomcat
2.1 打開tomcat的server.xml文件
找到配置tomcat http端口所在的位置
在下面增加以下代碼段
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" URIEncoding="utf-8"
maxThreads="1500" scheme="https" secure="true" useBodyEncodingForURI="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="D:\xxxx\test01.keystore" keystorePass="123456" />
其中配置http端口的地方 redirectPort需要修改爲和https所配置的端口,這樣當http協議訪問時才能自動重定向到https協議的端口
443爲https協議的默認端口,這樣https訪問時可以不輸入端口號訪問
2.2 配置tomcat web.xml 文件 結合http重定向端口完成 http訪問自動跳轉到https
打開web.xml拉倒最底部 該位置下增加代碼,配置tomcat的認證類型,配置所有請求都經過SSL證書認證
<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>
3.啓動tomcat 使用https協議訪問發佈的服務
https://ip/項目名
由於證書自己申請,未經機構認證,瀏覽器會提示危險,點擊高級繼續訪問即可
使用http協議訪問http://ip:8085/項目名 發現會自動跳轉到https的地址