Http升級到Https (本地測試,無須域名和認證)


在之前的語音識別的項目中,一切都在本地進行得很順利,然后把寫的Demo部署到服務器上給老大看的時候,通過IP訪問(http://192.168.xxx.xxx:8080這樣的形式)時,從一開始就壞掉了,使用Chrome都不能開啟錄音的權限了,就談不上語音轉換了,用Firefox來訪問居然迷之沒有問題,說明我寫的Demo沒有問題,那一定就是Chrome的問題了。調出錯誤的報告顯示得是

Only secure origins are allowed (see: https://goo.gl/Y0ZkNV).

找到問題立馬一百度就出來了

問題的具體原因參考這篇博客:http://www.h3399.cn/201704/77593.html

報錯的原因大概就是谷歌瀏覽器認為我的url是不安全的,不能開啟麥克風,攝像頭,定位等權限。那怎么才是安全的呢,只能把http協議升級為https。

因為升級https需要購買SSL證書之類的,並且都沒有自己的域名,所以只能在本地使用java的Keytool命令生成一個,來測試一下升級到Https是否能解決我的問題。

本文一下內容參考博客

  Tomcat配置https及訪問http自動跳轉至https

https://blog.csdn.net/bao19901210/article/details/8768362

 

一、生成證書文件

步驟:

(1)打開cmd,輸入

keytool -genkey -alias tomcat -keyalg RSA -keystore F:\tomcat.keystore -validity 36500

  參數簡要說明:“F:\tomcat.keystore”含義是將證書文件保存在F盤,證書文件名稱是tomcat.keystore ;

           “-validity 36500”含義是證書有效期,36500表示100年,默認值是90天
(2)在命令行填寫必要的參數

輸入密鑰庫密碼:此處需要輸入大於6個字符的字符串,例如123456

輸入兩次密碼之后彈出以下問題

“您的名字與姓氏是什么?”  這是必填項,並且必須是TOMCAT部署主機的域名或者IP[如:gbcom.com 或者 192.168.145.170],就是你將來要在瀏覽器中輸入的訪問地址
“你的組織單位名稱是什么?”、“您的組織名稱是什么?”、“您所在城市或區域名稱是什么?”、“您所在的州或者省份名稱是什么?”、“該單位的兩字母國家代碼是什么?” 可以按照需要填寫也可以不填寫直接回車,在系統詢問“正確嗎?”時,對照輸入信息,如果符合要求則使用鍵盤輸入字母“y”,否則輸入“n”重新填寫上面的信息

(3)輸入tomcat主密碼
輸入<tomcat>的主密碼,這項較為重要,會在tomcat配置文件中使用,建議輸入與keystore的密碼一致,設置其它密碼也可以

生成完成,可在指定目錄下找到證書文件。

 

二、配置Tomcat服務器

1、修改server.xml文件

(1)將生成的證書文件拷貝到Tomcat要引用的位置
(2)打開apache-tomcat-8.0.50\conf\server.xml,修改如下:

修改①:

(Tomcat版本不同該標簽中內容會有一些變動,但大致不變)
去掉注釋且修改參數

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/tomcat.keystore" keystorePass="123456" />

其中keystoreFile是證書存放的路徑,keystorePass為生成證書時輸入的密碼

修改③:

修改參數

<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

2、修改web.xml文件(可不修改)
  打開apache-tomcat-8.0.50\conf\web.xml,修改如下:
在</welcome-file-list>后面加上這樣一段

<login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
    <!-- Authorization setting for SSL -->
    <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>    

上述配置完成后,重啟Tomcat后即可以使用SSL。IE地址欄中可以直接輸入地址不必輸入“http://” 或者 “https://” ;也可以輸入 “http:// ” 會跳轉成為 “https://” 來登錄


注意事項:
(1)生成證書的時間,如果IE客戶端所在機器的時間早於證書生效時間,或者晚於有效時間,IE會提示“該安全證書已到期或還未生效”
(2)如果瀏覽器提示“安全證書上的名稱無效或者與站點名稱不匹配”,則是由生成證書時填寫的服務器所在主機的域名“您的名字與姓氏是什么?”您的名字與姓氏是什么?”不正確引起的

 

Tomcat配置完成后,使用Https訪問,Chrome會提示安全警告,點擊“高級”,繼續訪問即可,結果再https下使用ip地址訪問是沒有問題的可以獲取瀏覽器麥克風權限。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM