<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>SSL on awka</title>
        <link>https://my-garden-8a5.pages.dev/tags/ssl/</link>
        <description>Recent content in SSL on awka</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Sun, 19 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://my-garden-8a5.pages.dev/tags/ssl/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>一次 SSL 证书问题排查小结</title>
            <link>https://my-garden-8a5.pages.dev/posts/nanobot-gateway-ssl-error/</link>
            <pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://my-garden-8a5.pages.dev/posts/nanobot-gateway-ssl-error/</guid>
            <description>&lt;p&gt;今天解决了一个 nanobot gateway 启动失败的问题，记录一下排查过程和学到的东西。&lt;/p&gt;&#xA;&lt;h2 id=&#34;问题现象&#34;&gt;问题现象&#xA;&lt;/h2&gt;&lt;p&gt;启动 &lt;code&gt;nanobot gateway&lt;/code&gt; 时报错：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssl.SSLCertVerificationError: certificate verify failed: self-signed certificate in certificate chain&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;排查过程&#34;&gt;排查过程&#xA;&lt;/h2&gt;&lt;h3 id=&#34;第一反应代理问题&#34;&gt;第一反应：代理问题？&#xA;&lt;/h3&gt;&lt;p&gt;因为错误是 &amp;ldquo;self-signed certificate&amp;rdquo;，第一反应是 Clash Party 的 HTTPS 拦截又在搞事情。之前确实碰到过类似问题。&lt;/p&gt;&#xA;&lt;p&gt;于是：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;重启 Clash Party&lt;/li&gt;&#xA;&lt;li&gt;排除飞书相关域名&lt;/li&gt;&#xA;&lt;li&gt;完全退出飞书应用&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;然并卵。&lt;/p&gt;&#xA;&lt;h3 id=&#34;柳暗花明&#34;&gt;柳暗花明&#xA;&lt;/h3&gt;&lt;p&gt;最后用 &lt;code&gt;ssl.get_default_verify_paths()&lt;/code&gt; 检查 Python 的 SSL 配置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; ssl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; ssl&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get_default_verify_paths()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DefaultVerifyPaths(cafile&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;, capath&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;, &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    openssl_cafile&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/Library/Frameworks/Python.framework/Versions/3.12/etc/openssl/cert.pem&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    openssl_cafile_env&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SSL_CERT_FILE&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;问题找到了&lt;/strong&gt;：Python 期望证书在 &lt;code&gt;/Library/Frameworks/Python.framework/Versions/3.12/etc/openssl/cert.pem&lt;/code&gt;，但这个文件不存在！&lt;/p&gt;&#xA;&lt;p&gt;macOS 系统的证书实际在 &lt;code&gt;/etc/ssl/cert.pem&lt;/code&gt;（由 Apple 维护，6000+ 根证书）。&lt;/p&gt;&#xA;&lt;h2 id=&#34;解决&#34;&gt;解决&#xA;&lt;/h2&gt;&lt;p&gt;设置环境变量：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export SSL_CERT_FILE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/etc/ssl/cert.pem&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;添加到 &lt;code&gt;~/.zshrc&lt;/code&gt; 永久生效。&lt;/p&gt;&#xA;&lt;h2 id=&#34;学到的教训&#34;&gt;学到的教训&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;不要先入为主&lt;/strong&gt;：&amp;ldquo;self-signed certificate&amp;rdquo; 不一定是中间人攻击，也可能是证书路径没配好&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Python SSL 排查&lt;/strong&gt;：第一时间检查 &lt;code&gt;ssl.get_default_verify_paths()&lt;/code&gt; 能快速定位&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;macOS Python 的坑&lt;/strong&gt;：系统自带的 Python（官方安装包）没有正确配置系统证书路径，Homebrew 版会好一些&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;问题虽然简单，但排查方向跑偏了半小时。下次遇到 SSL 错误会先检查证书路径配置。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
