代码改变世界

本地测试Http升级到Https(证书信任)

2020-10-08 11:08  猎手家园  阅读(1924)  评论(0编辑  收藏  举报

当我们使用谷歌浏览器调用麦克风,摄像头,定位等权限时,谷歌浏览器认为http连接是不安全的,要求使用https,于是拒绝了访问。

但是我们是在本地测试,又没有域名和SSL证书,所以只能生成一个证书文件。

 

一、生成证书

1、打开CMD,输入以下命令:

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

意思是:“D:\tomcat\tomcat.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:\tomcat\tomcat.keystore -destkeystore D:\tomcat\tomcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

按它提示的命令输一遍就可以了。

 

二、配置Tomcat

1、修改server.xml文件

(1)将生成的证书文件拷贝到Tomcat要引用的位置
(2)打开apache-tomcat-8.0.20\conf\server.xml,修改如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="D:\tomcat\tomcat.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即可。