<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Cert on IT 运维小秋</title>
        <link>/tags/cert.html</link>
        <description>Recent content in Cert on IT 运维小秋</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>chenwx716@139.com</managingEditor>
        <webMaster>chenwx716@139.com</webMaster>
        <lastBuildDate>Tue, 03 Mar 2026 00:00:00 +0800</lastBuildDate><atom:link href="/tags/cert/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>内网证书管理</title>
        <link>/p/https-cert.html</link>
        <pubDate>Tue, 03 Mar 2026 00:00:00 +0800</pubDate>
        <author>chenwx716@139.com</author>
        <guid>/p/https-cert.html</guid>
        <description>&lt;h2 id=&#34;为什么必须要-https&#34;&gt;为什么必须要 https&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;前端浏览器安全机制, 如果非https很多功能不让用, 如调用摄像头;&lt;/li&gt;
&lt;li&gt;前端浏览器跨域, 页面和接口都必须https;&lt;/li&gt;
&lt;li&gt;现在很多程序调用默认https协议, 如果使用http需要很多复杂配置;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;内网开发经历的阶段&#34;&gt;内网开发经历的阶段&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;第一阶段: 全部 http&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;困难: 经常要处理https协议相关的配置和开关, 非常多；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二阶段: 自签ca证书&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;困难:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每个终端和服务器都需要手工导入证书：&lt;/li&gt;
&lt;li&gt;特别是容器化后, 每个容器镜像都需要处理这个证书问题, 第三方镜像可能还需要自己再封装一次;&lt;/li&gt;
&lt;li&gt;各语言加载证书的机制也不同, go, nodejs, java, python 等加载证书的方法各不相同, 有的根本没有使用系统证书;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;反复处理这个私有证书信任的问题&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三阶段: 公有证书&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;即外部购买一个1年期的泛域名证书, 内部所有服务都使用它&lt;/p&gt;
&lt;p&gt;困难:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;忘记续期&lt;/li&gt;
&lt;li&gt;续期后操作步骤繁多, 去多个地方替换&lt;/li&gt;
&lt;li&gt;小型测试环境每年花200买个证书也是小贵;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;第四阶段: 免费证书+自动续签+自动更新&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;使用 letsencrypt 的免费证书, 通过 acme 机制自动续签;&lt;/p&gt;
&lt;p&gt;这个是最终办法了;&lt;/p&gt;
&lt;p&gt;优势:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;主流浏览器是支持 letsencrypt 证书的;&lt;/li&gt;
&lt;li&gt;linux下&lt;/li&gt;
&lt;li&gt;免费&lt;/li&gt;
&lt;li&gt;很多工具和web服务器都支持自动申请和续期&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;缺点:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;经验证, windows cmd 终端环境没有信任 letsencrypt 的根证书;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;免费证书&#34;&gt;免费证书&lt;/h2&gt;
&lt;p&gt;letsencrypt 证书&lt;br /&gt;
每次可以申请一个3个月的证书&lt;/p&gt;
&lt;p&gt;http挑战验证也可以申请到泛域名证书&lt;/p&gt;
&lt;p&gt;证书管理方式&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;通过 acme 脚本方式&lt;/li&gt;
&lt;li&gt;原生支持的网关程序: traefix, nginx(acme模块), caddy, higress 等现代网关都支持&lt;/li&gt;
&lt;li&gt;cert-manager 集群内证书自动管理&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;注意事项&#34;&gt;注意事项&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;letsencrypt 生产环境有限流, 不能频繁申请; 相同域名一周限制5次, 调试阶段尽量使用letsencrypt的测试网地址进行验证。&lt;/li&gt;
&lt;li&gt;当同一个域名在多个地区使用时, 如云上和本地都在用时, 最好是统一到一处进行申请;&lt;/li&gt;
&lt;li&gt;多个申请源时, 最好不要申请泛域名证书, 容易冲突;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;泛域名证书的冲突场景&lt;br /&gt;
云上环境申请了一个 *.abc.com 的证书A, 本地内网的网关也申请了一个 *.abc.com 的证书B时；&lt;br /&gt;
当用户成功打开过一个域名后, 证书会有缓存；有时候浏览器会存在拿A证书去请求 B环境的域名；&lt;br /&gt;
即你打开的是B环境的 test.abc.com 的域名, 浏览器上看到使用的却是 A 环境的证书，此时证书校验就不通过;&lt;/p&gt;
&lt;p&gt;避免冲突的办法；&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不使用泛域名证书, 全部使用 指定二级域名证书;&lt;/li&gt;
&lt;li&gt;统一申请源, 只在一处申请泛域名证书, 续期后采用其它机制推送到别的网关进行更新;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;配合dns解析&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在外网时公网dns将域名解析到公网入口&lt;/li&gt;
&lt;li&gt;在内网时内网dns服务器将域名解析到内网入口&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
