You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

acme/autocert监听器报告来自未识别主机的TLS握手错误

问题描述:

当使用 acme/autocert 包创建一个 TLS 服务器,并且在握手过程中遇到来自未识别主机的错误时,你想要解决这个问题并提供代码示例。

解决方法:

要解决这个问题,你可以自定义 autocert 包的 TLS 配置,并在其中添加一个自定义的证书管理器来处理未识别主机的错误。

以下是一个代码示例:

package main

import (
	"crypto/tls"
	"fmt"
	"log"
	"net/http"

	"golang.org/x/crypto/acme/autocert"
)

func main() {
	// 创建自定义的证书管理器
	certManager := autocert.Manager{
		Prompt:     autocert.AcceptTOS,
		Cache:      autocert.DirCache("certs"), // 缓存证书
		HostPolicy: autocert.HostWhitelist("example.com"), // 只允许 example.com 主机
	}

	// 创建自定义的 TLS 配置
	tlsConfig := &tls.Config{
		GetCertificate: certManager.GetCertificate,
	}

	// 创建自定义的 HTTP 服务器
	server := &http.Server{
		Addr:      ":443",
		TLSConfig: tlsConfig,
	}

	// 注册处理程序
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Hello, TLS!")
	})

	// 启动服务器
	log.Fatal(server.ListenAndServeTLS("", "")) // 使用自动获取的证书和密钥
}

在上面的示例中,我们首先创建了一个自定义的证书管理器 certManager,并通过 Cache 字段指定证书的缓存目录,通过 HostPolicy 字段指定允许的主机。在这个示例中,我们只允许 example.com 主机。

然后,我们创建了一个自定义的 TLS 配置 tlsConfig,并将证书管理器的 GetCertificate 方法指定为获取证书的回调函数

最后,我们创建了一个自定义的 HTTP 服务器,并将 TLS 配置设置为我们创建的自定义配置。我们注册了一个处理程序来处理根路径的请求,并使用 ListenAndServeTLS 方法启动服务器

请确保你已经替换了示例代码中的主机名(example.com)和证书缓存目录(certs)为你自己的值。

这样,当客户端与你的服务器进行握手时,自动获取证书并验证主机名。如果主机名未被识别,将触发证书管理器的回调函数,你可以在其中自定义错误处理逻辑。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

学习 SSL/TLS ,这一篇就够了

Certificate signing request | 证书签名请求 || OCSP | Online Certificate Status Protocol | 在线证书状态协议 || CSP | Cryptographic Service Provider | 加密服务提供商 | ### 证书及其分类1. CA 证书、SSL 证书及其区别CA 证书是用来给客户证书签名的授信证书,它由 CA 颁发,是整个 TLS 握手信任的锚点。CA...

使用acme.sh自动续期DV证书

利用acme协议,完成证书的自动续期那三种方案也都有各自的优缺点,第一种的缺点很明显,就是无法完全避免手动操作,只是拉长的间隔。优点就是可以根据实际需求,灵活的选择各种类型证书,dv(免费或者便宜),ov(贵),ev(特别贵,申请特别难)。第二种的话,其实最接近零配置方案,缺点就是和大厂服务深度绑定,比如域名在阿里云申请,证书也要在阿里云买,服务器也要在阿里云。第三种的缺点就是目前来说只支持dv证书,再有就是需要一点点...

如何禁用VKE中Ingress 默认开启的HSTS功能?

[root@JMS cert]# curl -I https://lxb.demo.com -kHTTP/1.1 200 OKDate: Tue, 26 Apr 2022 06:56:25 GMTContent-Type: text/htmlContent-Length: 612Connection: keep-aliveLast-Modified: Tue, 04 Dec 2018 14:44:49 GMTETag: "5c0692e1-264"Accept-Ranges: bytes```# 参考文档[https://kubernetes.github.io/ingress-nginx/user-guide/tls/](https://kubernetes.github.io/ingress-nginx/user-guide/tls/)**如果...

如何使用 OpenSSL 工具对证书格式进行转换

# 问题描述我们在为负载均衡 CLB 配置 HTTPS 监听器时,需要为监听器绑定服务器证书,用于 SSL 握手协商,应用于HTTPS 单向认证场景。负载均衡仅支持 PEM 格式的证书,因此其它格式的证书需要转换为 PEM 格式后,才能... 用于启用 SSL/TLS 通信的库,在客户端或服务器应用程序中提供 SSL 和 TLS 协议支持。#### 其中 openssl 命令行工具的使用场景包括:1. 创建和处理证书及相关文件。2. SSL/TLS 协议测试( openssl s_server、ope...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

acme/autocert监听器报告来自未识别主机的TLS握手错误-优选内容

学习 SSL/TLS ,这一篇就够了
Certificate signing request | 证书签名请求 || OCSP | Online Certificate Status Protocol | 在线证书状态协议 || CSP | Cryptographic Service Provider | 加密服务提供商 | ### 证书及其分类1. CA 证书、SSL 证书及其区别CA 证书是用来给客户证书签名的授信证书,它由 CA 颁发,是整个 TLS 握手信任的锚点。CA...
API 发布历史
Cert 新增参数 MaxTLSVersion 和 MinTLSVersion,支持为 HTTPS 证书设置兼容的最高和最低 TLS 协议版本。 绑定证书 2024-03-06 DescribeForbiddenStreamInfoByPage 新增参数 Domain,支持通过 Domain 字段筛选禁推流列表。 查询禁推流列表 2024 年 02 月发布时间 API 说明 相关文档 2024-02-29 DescribeLiveTranscodeData 支持查看 H.266 转码、画质增强转码和 8K 分辨率档位的转码用量数据。 查询直播域名转码用量 2024-02-04 Up...
使用acme.sh自动续期DV证书
利用acme协议,完成证书的自动续期那三种方案也都有各自的优缺点,第一种的缺点很明显,就是无法完全避免手动操作,只是拉长的间隔。优点就是可以根据实际需求,灵活的选择各种类型证书,dv(免费或者便宜),ov(贵),ev(特别贵,申请特别难)。第二种的话,其实最接近零配置方案,缺点就是和大厂服务深度绑定,比如域名在阿里云申请,证书也要在阿里云买,服务器也要在阿里云。第三种的缺点就是目前来说只支持dv证书,再有就是需要一点点...
DescribeListenerAttributes
调用 DescribeListenerAttributes 接口,查看指定监听器的详细信息。 调试API Explorer您可以通过API Explorer在线发起调用,无需关注签名生成过程,快速获取调用结果。去调试请求参数参数名称 类型 是否必选 示... cert-bp1o94dp5i6ea**** HTTPS监听器关联的证书ID。 ClientHeaderTimeout Integer 60 读取客户端请求头的超时时间。客户端向CLB发起请求,若在超时时间内客户端没有传输整个报头,CLB将返回408错误码给客户端,表示...

acme/autocert监听器报告来自未识别主机的TLS握手错误-相关内容

如何禁用VKE中Ingress 默认开启的HSTS功能?

[root@JMS cert]# curl -I https://lxb.demo.com -kHTTP/1.1 200 OKDate: Tue, 26 Apr 2022 06:56:25 GMTContent-Type: text/htmlContent-Length: 612Connection: keep-aliveLast-Modified: Tue, 04 Dec 2018 14:44:49 GMTETag: "5c0692e1-264"Accept-Ranges: bytes```# 参考文档[https://kubernetes.github.io/ingress-nginx/user-guide/tls/](https://kubernetes.github.io/ingress-nginx/user-guide/tls/)**如果...

如何使用 OpenSSL 工具对证书格式进行转换

# 问题描述我们在为负载均衡 CLB 配置 HTTPS 监听器时,需要为监听器绑定服务器证书,用于 SSL 握手协商,应用于HTTPS 单向认证场景。负载均衡仅支持 PEM 格式的证书,因此其它格式的证书需要转换为 PEM 格式后,才能... 用于启用 SSL/TLS 通信的库,在客户端或服务器应用程序中提供 SSL 和 TLS 协议支持。#### 其中 openssl 命令行工具的使用场景包括:1. 创建和处理证书及相关文件。2. SSL/TLS 协议测试( openssl s_server、ope...

新增加速域名

falseTlsVersion是 [ ]StringTlS 版本,输入版本需要连续,支持TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。当 Enable 字段为 true 时,此选项必填。[TLSv1, TLSv1.1]CertBind否CertBind证书配置,绑定证书的情况下,Https、HST... 如果您希望通过对用户 HTTP 请求头中的 UA 字段进行规则判断,从而进行访问者身份识别及过滤,您可以配置 User-Agent 黑白名单。-Enable是 Boolean是否启用 UserAgent 黑/白名单,默认不启用,支持取值:true:启用。fal...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

CreateListener

CLB将返回408错误码给客户端,表示请求超时。 取值范围为30-120秒。默认为60秒。 仅对HTTP/HTTPS监听器生效。 ClientBodyTimeout Integer 否 60 读取客户端请求正文的超时时间。客户端向CLB发起请求,若在超时... 仅对HTTP/HTTPS监听器生效。 SecurityPolicyId String 否 default_policy HTTPS监听器的TLS安全策略。 default_policy(默认值):支持SSL v3、TLS v1.0、TLS v1.1、TLS v1.2。 tls_cipher_policy_1_0:支持T...

证书管理

接口的参数说明和错误码等信息可通过接口文档或打开 API Explorer 的文档说明页签查看。 前提条件调用接口前,请先完成 PHP SDK 的安装及初始化操作 调用示例本节为您介绍证书管理相关接口的功能和调用示例。 添加证书您可以调用 CreateCert 接口添加证书。详细的参数说明可参见 CreateCert 接口文档。 接口调用示例如下所示。 php setAccessKey(getenv("ACCESS_KEY_ID")); $client->setSecretKey(getenv("ACCESS_KEY_SECRET")...

DescribeListeners

调用 DescribeListeners 接口,查询满足指定条件的监听器。 调试API Explorer您可以通过API Explorer在线发起调用,无需关注签名生成过程,快速获取调用结果。去调试请求参数参数名称 类型 是否必选 示例值 描... Enabled String off 是否启用监听器。 on:开启。 off:不开启。 ServerGroupId String rsp-bp1o94dp5i6ea**** TCP/UDP监听器关联的后端服务器组的ID。HTTP/HTTPS监听器关联的默认后端服务器组ID。 Certificat...

ListDomain-查询云 WAF 实例防护网站信息

CertificateID Integer 369 证书 ID,协议类型包含 HTTPS 时显示。 CertificateName String certicifate1 证书名称,协议类型包含 HTTPS 时显示。 LBAlgorithm String wrr 负载均衡算法类型。 wrr:加权... TLSEnable Integer 1 是否开启日志服务。 0:关闭 1:开启 SSLProtocols Array of Strings ["TLSv1","TLSv1.1","TLSv1.2","TLSv1.3"] TLS 协议版本。 SSLCiphers Array of Strings ["ECDHE-ECDSA-AES128...

修订记录

发布日期 修订记录 2024年4月 第十五次正式发布。本次发布内容:ALB支持对接证书中心。 CreateListener 接口新增 CertificateSource 字段,表示默认服务器证书的来源,仅 HTTPS 监听器生效;新增 CertCenterCertifica... 开启TLSv1.3后,ALB会在您已选择的加密套件基础上默认添加 TLSv1.3 的三个套件,暂不支持您修改TLSv1.3 的套件。 2023年10月 第十一次正式发布。本次发布内容: ALB 错误码更新 实例操作接口错误码更新:CreateLoad...

安装证书到Nginx服务器

示例域名:ssl.example.com 域名对应的虚拟主机配置(Virtural Host Configs)文件的路径:/etc/nginx/conf.d/ssl.example.com.conf 教程概览本教程将指导您修改nginx.conf配置文件中的server{}配置,为域名开启443端口监听并关联对应证书。具体步骤如下: 下载证书到本地计算机 上传证书到Nginx服务器 在Nginx服务器配置证书 验证证书是否配置成功 步骤1:下载证书到本地计算机对于已签发的SSL证书,您可以从证书中心控制台下载适配...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询