• 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:	omcat.keystore -validity 36500

      参数简要说明:“F: omcat.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.50confserver.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.50confweb.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地址访问是没有问题的可以获取浏览器麦克风权限。

  • 相关阅读:
    Mysql初识
    滚动监听实例
    利用div显示隐藏实现的分页效果
    animation动画汇总(一阶段项目)
    css3动画效果
    animate动画基础
    切换式轮播方式
    Ajax基础
    Jquery日历编写小练习
    [转]好文章:Android的AlertDialog详解
  • 原文地址:https://www.cnblogs.com/ghq120/p/9063664.html
Copyright © 2020-2023  润新知