在之前的语音识别的项目中,一切都在本地进行得很顺利,然后把写的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服务器
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,修改如下:
在后面加上这样一段
<login-config> <auth-method>CLIENT-CERTauth-method> <realm-name>Client Cert Users-only Arearealm-name> login-config> <security-constraint> <web-resource-collection> <web-resource-name>SSLweb-resource-name> <url-pattern>/*url-pattern> web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIALtransport-guarantee> user-data-constraint> security-constraint>
上述配置完成后,重启Tomcat后即可以使用SSL。IE地址栏中可以直接输入地址不必输入“http://” 或者 “https://” ;也可以输入 “http:// ” 会跳转成为 “https://” 来登录
注意事项:
(1)生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”
(2)如果浏览器提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”您的名字与姓氏是什么?”不正确引起的
Tomcat配置完成后,使用Https访问,Chrome会提示安全警告,点击“高级”,继续访问即可,结果再https下使用ip地址访问是没有问题的可以获取浏览器麦克风权限。