只要使用自签名证书,必然会遇到这种问题

泰山李工 泰山李工     2023-04-17     288

关键词:

前言

有关加解密、https握手连接、域名证书等基础知识,请自我学习了解。介绍大家都会用的工具:

https安全评估工具:https://myssl.com/

https最佳安全实践介绍: https://myssl.com/  首页底部

 1、如何获取数字证书(签名证书)

任何机构或者个人都可以申请数字证书,并使用由CA机构颁发的数字证书为自己的应用保驾护航。


1. 花钱买,从TSP服务商(阿里、腾讯) 购买受信任的签名证书,**根据实际需要,考虑买通配符证书**。

2. 免费的,自签名证书,就是使用openssl、keytool等生成工具,自己生成的证书 。
  + 缺点:**不被client端信任问题**,有些client可以设置Skip TLS Verify忽略证书检查,不能设置的(如浏览器)只能添加信任来解决。
  + 因此,一般用于个人\\企业的内网系统,企业建议使用阿里的免费证书。

3. 免费的,**Let’s Encrypt可以申请免费的证书**,作为一个CA机构得到了很多大公司的支持,它定义了ACME协议,将管理证书的流程进行了标准化。
  + 缺点:证书每三个月会过期,但是可以无限续签;另外生产证书操作步骤真的很麻烦,因此不建议用。

4. 免费的,从服务商(腾讯、阿里)等申请免费的证书,有效期一年

5. 复用的,花钱买通配符证书,我们的内网应用系统就可以使用自定义的二级域名啦。建议是内网用不是外网,**别乱用,外网映射多了,就容易走火,以免对正常业务排查问题带来麻烦**


>备注:常用的两个证书管理工具:KeyTool,OpenSSL—>构建CSR(Certificate Signing Request,数字证书签发申请),交由CA机构签发,形成最终的数字证书,你可以使用CSR在线工具https://www.myssl.cn/tools/create-csr.html

2、使用自签名证书会遇到以下问题

 

TLS/SSL握手过程,我们知道client会验证来自server端的tls证书,使用自签名证书或内部网络路径混乱都会造成client验证证书失败或发生错误。

  • 有些client可以设置Skip TLS Verify忽略证书检查,比如prometheus忽略验证exporter的证书,grafana忽略验证prometheus的证书
  • 有些client不能设置忽略证书检查,比如浏览器不信任自签名证书,如果此服务器仅供您个人内网使用,解决方案是将此证书添加到 浏览器 的受信任证书中。
# cd /tmp
C指定国家、ST指定省份、L指定区、O公司(可以不要),CN域名或者IP(localhost\\127.0.0.1...)
# openssl req -new -newkey rsa:2048 -nodes -x509 -days 3650 -keyout ca.key -out ca.crt \\
-subj "/C=CN/ST=Beijing/L=Beijing/O=MoeloveTest/CN=localhost"在

 

1. 自签名CA证书存在不被(client客户端)浏览器信任问题,解决方法很简单自行“baidu”下,重点介绍下面的问题
2. 上述命令生产的自签名ca证书,client客户端验证来自服务端的证书时,报错:

Q1. failed: x509: cannot validate certificate for 172.22.0.xx because it doesn\'t contain any IP SANs

A1:客户端(grafana)用IP调用或访问服务端时,无法验证172.22.0.xx(prometheus)的证书, 因为它不包含任何IP SAN,怎么办?

   解决方法1:grafana设置忽略对sever端的证书验证

   解决方法2:若不忽略验证证书,则需要给prometheus server生产一个含有“服务端IP”的SANs的证书。

   解决方法3: 客户端etc\\hosts中添加一条DNS解析记录:服务端IP 为IP起的别名,客户端直接用别名调用。

Q2. failed: x509: certificate relies on legacy Common Name field, use SANs instead
A2:查找资料后发现是因为 go 1.15 版本开始废弃 CommonName,推荐使用 SAN 证书。因此,需要将“DNS名称及对应的server主机IP”添加到SAN中来解决此问题 echo subjectAltName = DNS:xxx(别名),IP:server主机ip,IP:127.0.0.1 > extfile.cnf

备注:可联系我获取《生产自签名证书.shell脚本》

3、联系,交流、共同成长

@泰山李工,微信公众号SRE泰山站,了解更多知识。

自签名证书:私钥问题

...7-03-2116:51:09【问题描述】:要通过SslStream实现TLS加密,我使用的是自签名证书。对于从较旧的Win2003机器连接的客户端,我遇到了奇怪的“无通用算法”错误。阅读thisthread后,我发现了以下内容:如果我更改我的证书生成程序(... 查看详情

Azure 上的 Certenroll - 生成自签名证书

...LLLib)构建了一个创建自签名证书。一切都在本地工作,但只要我将它部署到Azure,我就会得到:服务器API错误:消息:CertEnroll::CX509Enr 查看详情

SSL 认证问题 - 使用 Tomcat 的 Spring 和本地自签名证书

】SSL认证问题-使用Tomcat的Spring和本地自签名证书【英文标题】:SSLCertificationIssue-SpringandLocalSelf-SignedCertificatewithTomcat【发布时间】:2015-05-1504:30:20【问题描述】:我正在尝试使用CAS/Spring设置开发环境,但遇到了证书问题。更新... 查看详情

wget、自签名证书和自定义 HTTPS 服务器

...,并通过OpenSSL添加了SSL支持。我正在使用自签名证书。只要我将CA添加到受信任的根CA,IE、Firefox和Chrome就会愉快地加载内容。但是,wget(即使使用--no-c 查看详情

自签名证书流程

...案1】:您自己完成所有自签名证书的事情。这是我过去使用的PowerShell脚本。当然,将值更新为对您有意义的值。$myName="YourName"$myEmail="your@ 查看详情

Alamofire 测试包括自签名证书?

...gnedcert?【发布时间】:2015-08-1202:04:09【问题描述】:我在使用Xcode7.0.5和自签名证书时遇到问题(我认为)。我想知道Alamofireswift-2.0分支测试用例是否包含自签名证书?【问题讨论】:我看到了信任单元测试和下载单元测试,但... 查看详情

Chrome 不允许使用自签名证书链接的证书

】Chrome不允许使用自签名证书链接的证书【英文标题】:Chromedoesnotallowcertificatechainedwithself-signedcertificate【发布时间】:2020-05-2207:44:40【问题描述】:我有证书,它与自签名证书链接。Chrome拒绝它,我什至无法单击>高级>继... 查看详情

android使用ssl自签名证书

...种证书费用普遍比较贵,所以在debug环境下可以考虑使用自签名证书。这篇内容将介绍Android如何使用自签名证书,主要分为以下4个步骤:创建服务端SSL自签名证书下载并配置Tomcat服务器Android端导入SSL证书同时支持自... 查看详情

android使用ssl自签名证书

...种证书费用普遍比较贵,所以在debug环境下可以考虑使用自签名证书。这篇内容将介绍Android如何使用自签名证书,主要分为以下4个步骤:创建服务端SSL自签名证书下载并配置Tomcat服务器Android端导入SSL证书同时支持自... 查看详情

android使用ssl自签名证书

...种证书费用普遍比较贵,所以在debug环境下可以考虑使用自签名证书。这篇内容将介绍Android如何使用自签名证书,主要分为以下4个步骤:创建服务端SSL自签名证书下载并配置Tomcat服务器Android端导入SSL证书同时支持自... 查看详情

Adobe Air - 自签名证书

...我需要生成一个自签名的Adob​​eAir证书。怎么做?(我使用的是FlashCS5-AIR2.0/2.5)我遇到了this教程-ADT代表什么以及在哪里输入命令行?谢谢。【问题讨论】:【参考方案1】:FlashCS5将为您创建一个证书。在您输入证书的框旁边... 查看详情

将自签名证书与 .NET 的 HttpWebRequest/Response 一起使用

】将自签名证书与.NET的HttpWebRequest/Response一起使用【英文标题】:Usingaself-signedcertificatewith.NET\'sHttpWebRequest/Response【发布时间】:2010-10-0607:37:14【问题描述】:我正在尝试连接到使用自签名SSL证书的API。我这样做是使用.NET的HttpWe... 查看详情

iOS 推送通知自签名证书

...dcertificate【发布时间】:2019-06-2710:59:14【问题描述】:我使用Cordova制作了项目,并且正在尝试将其移植到其他平台。我已经成功地为android构建了一切。但是我在为iOS构建它时遇到了问题(cordovabuildios--release--device)。我的项目... 查看详情

在 aws 弹性负载均衡器上无法让 https 使用自签名证书

】在aws弹性负载均衡器上无法让https使用自签名证书【英文标题】:Troublegettinghttpstoworkwithselfsignedcertificateonawselasticloadbalancer【发布时间】:2013-09-1605:44:22【问题描述】:我在使用自签名证书在我的aws弹性负载均衡器上配置https时... 查看详情

如何添加自签名ssl证书自签名ssl证书存风险

所谓自签SSL证书,是指不受信任的任意机构或个人,使用工具自己签发的SSL证书。自签名SSL证书可以随意签发,没有第三方监督审核,不受浏览器和操作系统信任,常被用于伪造证书进行中间人攻击,劫持SSL加密流量。很多网站... 查看详情

在 IBM MobileFirst android 中使用自签名证书的问题

】在IBMMobileFirstandroid中使用自签名证书的问题【英文标题】:IssueinusingaselfsignedcertificateinIBMMobileFirstandroid【发布时间】:2016-06-0308:22:05【问题描述】:我正在尝试从我的android应用程序连接到httpsmobilefirst服务器。使用自签名证书... 查看详情

使用自签名证书连接到 SSL 服务器的客户端

】使用自签名证书连接到SSL服务器的客户端【英文标题】:ClientconnectingtoanSSLserverwithSelf-SignedCertificates【发布时间】:2010-12-1617:13:47【问题描述】:我完全被困在这里了。我有一个需要使用自签名证书连接到SSL服务器的java客户端... 查看详情

SSL 握手失败 - 一个威瑞信链证书 - 包含两个 CA 签名证书和一个自签名证书

...一个问题并试图调试它。我们购买了威瑞信证书。当我们使用:op 查看详情