当我们使用谷歌浏览器调用麦克风,摄像头,定位等权限时,谷歌浏览器认为http连接是不安全的,要求使用https,于是拒绝了访问。
但是我们是在本地测试,又没有域名和SSL证书,所以只能生成一个证书文件。
一、生成证书
1、打开CMD,输入以下命令:
keytool -genkey -alias tomcat -keyalg RSA -keystore D: omcat omcat.keystore -validity 36500
意思是:“D: omcat omcat.keystore”含义是将证书文件保存在F盘,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天。
2、接下来要输入密钥口令,由于是本地,我输入了:123456
3、接下来要填写一些必要信息:
- “您的名字与姓氏是什么?”
这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:abcom.com 或者 192.168.0.1],就是你将来要在浏览器中输入的访问地址
- “你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”
可以按照需要填写也可以不填写直接回车,最后一步在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息。
4、输入tomcat主密码
输入<tomcat>的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以。
生成完成,可在指定目录下找到证书文件。
5、此时会报错
Warning: JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore D: omcat omcat.keystore -destkeystore D: omcat omcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
按它提示的命令输一遍就可以了。
二、配置Tomcat
1、修改server.xml文件
(1)将生成的证书文件拷贝到Tomcat要引用的位置
(2)打开apache-tomcat-8.0.20confserver.xml,修改如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D: omcat omcat.keystore" keystorePass="123456" />
这里有两点要注意一下:
(1)这段代码默认是注释掉的,需要自己打开。
(2)Https默认端口是443,由于我本地还装了其它应用,所以指定8443,这样就需要在访问的时候,要带端口。
同时要修改跳转端口
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
注意事项同上。
2、修改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。
3、说明
使用Https访问,Chrome会提示安全警告,需要手动点击“高级”,“继续访问”即可,结果再https下使用ip地址访问是没有问题的可以获取浏览器麦克风权限。
三、自动生效
每次打开URL都需要手动去点击“高级”,“继续访问”,有人使用下面的办法可以解决这个问题(不过我配置完成后还是不行,我现在贴出来,大家可以试验一下)。
1、点击URL前面的ICON
2、将证书保存到本地
3、双击安装证书
4、选择受信任的根证书颁发机构
5、确定,重启Chorme即可。