1、背景

本文适用于基于https(http+ssl)的网站通信、本地调试等,上线是请寻找免费 ssl证书申请。

本地调试过程中,一些特殊的场景需要我使用http+ssl通信,比如在Chrome中使用客户端麦克风。

笔者起初使用以下一些命令,在linux、windows进行自签名,但是没能得到Chrome的信任,本地Chrome版本76.0

1. 使用openssl生成密钥privkey.pem:
openssl genrsa -out D:\develop\nginx-1.14.2\conf\privkey2.key 1024/2038
证书信息可以随便填或者留空,只有Common Name要根据你的域名填写。
2. 使用密钥生成证书server.pem:
openssl req -new -x509 -key D:\develop\nginx-1.14.2\conf\privkey2.key -out D:\develop\nginx-1.14.2\conf\server2.pem -days 365

典型的症状就是报错:

1、ERR_CERT_AUTHORITY_INVALID

2、Subject Alternative Name missing

如下图:

后来在网上一篇文章《怎么让 chrome 信任自签名的 localhost 证书啊》找到了一些原因:

高版本的Chrome需要验证SAN

1. 首先要看你的 chrome 报的自签名证书是什么问题(不同错误提示,有不同的解决方法)
2. 要看你的 chrome 的版本号,从 58 版本开始,自签证书就只认 SAN 不认 CommonName 了
3. 自签证书里面设置的 SAN 是 ip 还是域名,目前 chrome 会认域名的,本地测试,建议改 host 来测

使用了mkcert生成证书,响应的工具需要到github下载,https://github.com/FiloSottile/mkcert/releases

下载 mkcert-vx.y.z-windows-amd64.exe

起初使用的命令如下

mkcert-v1.4.1-windows-amd64.exe www.aaa.com

同时也配置了本地dns(c:\windows\system32\drivers\etc\hosts)文件

172.16.3.50    www.aaa.com

然后执行

mkcert-v1.4.1-windows-amd64.exe -install

结果无效,Chrome还是报错。

正确方法如下:

1、生成证书

mkcert-v1.4.1-windows-amd64.exe www.aaa.com aiPlatform.dev localhost 127.0.0.1 ::1 172.16.3.50

2、安装证书

mkcert-v1.4.1-windows-amd64.exe -install

3、把mkcert-v1.4.1-windows-amd64.exe目录中生成的证书www.aaa.com+5.pem和www.aaa.com+5-key.pem拷贝到nginx的目录中,修改证书

修改证书

4、重启nginx

nginx -s stop
nginx

经过以上配置,证书可以被信任了,也可以正常访问wss://服务

以上地址,可以使用上面命令中使用到的几个地址,包括虚拟域名解析

https://www.aaa.com:8443/asr_online_ws.html

cer证书转jks

java下面笔者在本地调试的时候,由于使用的是自签名证书,需要在调试过程中加载自签名的信任证书。

java下面只人jks,所需需要进行证书转换,命令如下

keytool -import -alias mycert -file www.xxx.com+.pem -keystore D:\cert\www.xxx.com+.jks

弹出的提示框输入两次changeit,然后输入"是”,java代码中在通信前设置证书

public static void main(String[] args) {

    System.setProperty("javax.net.ssl.trustStore","cert\\www.xxx.com+5.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); int length = args.length;
if(length==)
{
System.out.println("请填写wav识别文件路径");
return;
}
String WS_URL="wss://ai.xxx.cn:6002/wsapi/asrv2";
}

版权归https://global.v2ex.com/t/365406及原作者所有

相关网址:

https://www.v2ex.com/t/524671

https://blog.filippo.io/mkcert-valid-https-certificates-for-localhost/

https://github.com/FiloSottile/mkcert

https本地自签名证书添加到信任证书访问的更多相关文章

  1. 图解Win7如何手动添加受信任证书

    点击开始—>运行,如下图所示:   弹出“控制台”窗口如下,如下图所示:   点击“文件—添加/删除管理单元”,如下图所示:   选择“证书”,并点击“添加”,如下图所示:   在弹出的窗口上选 ...

  2. Windows 7 手动添加受信任证书教程

    步骤如下: 1.点击开始-运行,如下图: 2.弹出"控制台"窗口如下,如下图: 3.点击"文件-添加/删除管理单元",如下图: 4.选择"证书&quo ...

  3. 使用本地自签名证书为 React 项目启用 https 支持

    简介 现在是大前端的时代,我们在本地开发 React 项目非常方便.这不是本文的重点,今天要分享一个话题是,如何为这些本地的项目,添加 https 的支持.为什么要考虑这个问题呢?主要有几个原因 如果 ...

  4. https遇到自签名证书/信任证书

    对于CA机构颁发的证书Okhttp默认支持 可以直接访问 但是对于自定义的证书就不可以了(如:https ://kyfw.12306.cn/otn/), 需要加入Trust 下面分两部分来写,一是信任 ...

  5. 添加自签发的 SSL 证书为受信任的根证书

    原文:http://cnzhx.net/blog/self-signed-certificate-as-trusted-root-ca-in-windows/ 添加自签发的 SSL 证书为受信任的根证 ...

  6. nginx https ssl 设置受信任证书[转然哥]

    nginx https ssl 设置受信任证书[原创] 1. 安装nginx 支持ssl模块 http://nginx.org/en/docs/configure.html yum -y instal ...

  7. 搭建https本地服务器:如何得到被所有客户端认可的ssl证书

    https,作为http的加密版,作用还是很大的:能够提升网站搜索权重,让你的网站更安全,而且如果你的网站没有使用https的话,将无法作为移动设备原生应用的api接口.可见掌握为网站启用https的 ...

  8. https搭建(自签名证书)

    博客搬家: https搭建(自签名证书) 上一篇博客探究了https(ssl)的原理,为了贯彻理论落实于实践的宗旨,本文将记录我搭建https的实操流程,使用Apache2+ubuntu+openss ...

  9. HTTPS 信任证书

    使用HttpsURLConnection访问HTTPS链接时一般需要引入证书,否则会产生异常. 但是也可以使用信任所有证书的方式来达到访问的目的. 经上网查询资料发现一个很好用的类来实现信任所有证书的 ...

随机推荐

  1. 前后端分离结构中使用shiro进行权限控制

    前阵子在前后端分离项目中集成shiro项目,折腾了一下子,参考了网上一些博客,发现大多都还是之前传统的模式,并不适用于前后端分离结构.今天抽空整理了下demo,方便以后使用以及后来人参考. 一.spr ...

  2. 设计模式--Proxy模式

    这篇主要介绍代理模式相关内容,主要是一些基本概念普及. 代理模式 1.什么是代理模式? 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问.[DP] 通俗的说就是指客户端并不直接调用 ...

  3. MySQL中的内连接、左连接、右连接、全连接、交叉连接

    创建两个表(a_table.b_table),两个表的关联字段分别为:a_table.a_id和b_table.b_id CREATE TABLE a_table ( a_id int NOT NUL ...

  4. C语言中一个语句太长用什么换行?

     C语言中一个语句太长用什么换行? 5 C语言中一个语句太长用什么换行?比如我有一个printf语句很长很长,问了美观,我不想写在这一行了,要换到下一行,是不是在这行结尾的时候,要用个什么标识来表 ...

  5. 通过jar包名称,获取maven的依赖信息GAV

    烦恼:当我们手上有一堆三方件jar包,想要转成maven管理时,需要一个一个配置进pom文件中,而且GAV信息还得去收集. 为了快速生成如下信息,我们可以这样.... GAV:groupId + ar ...

  6. 滚动加载|页面滑到底部加载数据|jquery.endless-scroll插件|使用demo

    <html> <head> <link rel="dns-prefetch" href="http://i.tq121.com.cn&quo ...

  7. jquery.lazyload.js-v1.9.1延时加载插件,已兼容ie6和各大浏览器

    来源:http://www.jq22.com/jquery-info390 使用前要求: img的设置: 1.class要配上“lazy”: 2.用data-original代替src: 3.如果想要 ...

  8. param动作

    param动作通常与forword一起使用 <jsp:forword page="目标页面" > <jsp:param value="参数值" ...

  9. mysql 执行存储过程报错Prepared statement needs to be re-prepared

    今日思语:不喜欢再见 说再见,因为有时明知道下一次再见已是遥遥无期或是不再见 错误如下: ERROR 1615 (HY000) at line 406 in file: 'update-mysql.s ...

  10. 读RAM时的时序风险

    读RAM时的时序有两个风险:1.数据已经存储好,读所需的时间.2.数据同时更新,读所需的时间节点.对于前者,只要延时足够节拍就行.对于后者,还必须要考虑数据建立的时间,同样延时的准备可能会因为数据尚未 ...