前言
最近有個需求,是通過調用api訪問攝像頭進行圖像識別,無奈谷歌瀏覽器默認限制https纔可以開啓攝像頭和話筒的訪問權限,服務器是直接通過ip訪問的,功能做好了無法使用。
開發環境的話可以通過花生殼之類的代理,但在生產環境是不讓使用的,最好的方式就是申請域名+ssl證書實現https訪問。但是申請比較繁瑣,時間跨度比較久,想到另外一種方案就是使用自己生成證書+ip的方式。
開始
服務是使用tomcat部署的,配置比較簡單。步驟如下:
生成證書文件
在jdk目錄,比如:D:\java1.8\jdk\jre\lib\security>
目錄輸入以下命令
keytool -genkey -alias szjt -keyalg RSA -keysize 1024 -keypass password -storepass password -dname "CN=192.168.1.99,OU=szjt,O=szjt,L=SZ,ST=GD,C=CN" -ext san=ip:192.168.1.99 -validity 3600 -keystore D:\szjt.keystore
其中192.168.1.99
是服務器訪問IP,-keypass password -storepass password
是設置的證書密碼,-validity 3600
設置過期時間,單位爲天,D:\szjt.keystore
是證書存放位置。
生成crt文件
完了之後再輸入以下命令
keytool -export -file D:\szjt.crt -alias szjt -keystore D:\szjt.keystore
輸入祕鑰生成時設置的密碼:password
導入證書文件
keytool -import -keystore .\cacerts -file D:\szjt.crt -alias szjt
輸入默認密碼:changeit
配置tomcat
在$tomcat/conf/server.xml文件修改或者增加以下內容
<Connector port="8443" protocol="HTTP/1.1"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="D:\szjt.keystore" keystorePass="password"/>
啓動tomcat之後訪問https://192.168.1.99:8443
即可。