﻿{"id":358,"date":"2025-09-02T23:00:15","date_gmt":"2025-09-02T15:00:15","guid":{"rendered":"https:\/\/www.free-ai.top\/?p=358"},"modified":"2025-09-03T14:40:15","modified_gmt":"2025-09-03T06:40:15","slug":"%e7%94%9f%e6%88%90-iis-%e4%bd%bf%e7%94%a8%e7%9a%84%e5%85%8d%e8%b4%b9%e8%af%81%e4%b9%a6%ef%bc%883-%e4%b8%aa%e6%9c%88%e5%91%a8%e6%9c%9f%ef%bc%8c%e5%8f%af%e6%97%a0%e9%99%90%e6%9b%b4%e6%96%b0%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.free-ai.top\/?p=358","title":{"rendered":"\u751f\u6210 IIS \u4f7f\u7528\u7684\u514d\u8d39\u8bc1\u4e66\uff083 \u4e2a\u6708\u5468\u671f\uff0c\u53ef\u65e0\u9650\u66f4\u65b0\uff09"},"content":{"rendered":"<p>Let&#8217;s Encrypt \u662f\u4e00\u4e2a\u975e\u5e38\u5b89\u5168\u4e14\u503c\u5f97\u4fe1\u8d56\u7684\u8bc1\u4e66\u9881\u53d1\u673a\u6784\uff08CA\uff09\u3002<\/p>\n<p>\u5b83\u63d0\u4f9b\u7684 SSL\/TLS \u8bc1\u4e66\u5728\u6280\u672f\u4e0a\u4e0e\u5546\u4e1a\u8bc1\u4e66\uff08\u5982 DigiCert, GeoTrust, Sectigo \u7b49\uff09\u63d0\u4f9b\u7684\u52a0\u5bc6\u5f3a\u5ea6\u5b8c\u5168\u76f8\u540c\u3002\u5b83\u4eec\u90fd\u9075\u5faa\u76f8\u540c\u7684\u884c\u4e1a\u6807\u51c6\uff08X.509\u6807\u51c6\uff09\uff0c\u63d0\u4f9b\u76f8\u540c\u7684\u52a0\u5bc6\u7ea7\u522b\uff08\u4f8b\u5982 RSA \u6216 ECC \u5bc6\u94a5\uff09\u3002<\/p>\n<p># \u66f4\u65b0\u8bc1\u4e66<br \/>\n~\/.acme.sh\/acme.sh &#8211;renew -d free-ai.top &#8211;force<\/p>\n<p># \u7533\u8bf7\u8bc1\u4e66\uff08Linux acme.sh\uff09<br \/>\nacme.sh &#8211;issue &#8211;dns dns_ali -d free-ai.top &#8211;server letsencrypt<\/p>\n<p>acme.sh &#8211;install-cert -d free-ai.top \\<br \/>\n&#8211;key-file \/home\/aliketen\/docker-compose-app\/nginx\/certs\/free-ai.top_ssl.key \\<br \/>\n&#8211;fullchain-file \/\/home\/aliketen\/docker-compose-app\/nginx\/certs\/free-ai.top_ssl.crt \\<br \/>\n&#8211;reloadcmd &#8220;docker restart nginx-ds&#8221;<\/p>\n<p># \u5207\u6362\u5230\u8bc1\u4e66\u76ee\u5f55<br \/>\ncd ~\/.acme.sh\/free-ai.top<\/p>\n<p># \u751f\u6210 Windows\/IIS \u517c\u5bb9 PFX<br \/>\nopenssl pkcs12 -export \\<br \/>\n-out www.xxx.com_ssl_compat.pfx \\<br \/>\n-inkey www.xxx.com.key \\<br \/>\n-in www.xxx.com.cer \\<br \/>\n-certfile ca.cer \\<br \/>\n-passout pass:free-ai.top \\<br \/>\n-keypbe PBE-SHA1-3DES \\<br \/>\n-certpbe PBE-SHA1-3DES \\<br \/>\n-macalg SHA1 \\<br \/>\n-nomaciter<\/p>\n<p># \u4f7f\u7528\u811a\u672c\u751f\u6210<br \/>\nsudo mkdir -p .\/scripts\/<br \/>\nsudo vi gen_pfx.sh<\/p>\n<pre><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n#!\/bin\/bash\n\n# PFX \u5bc6\u7801\nPASSWORD=&quot;free-ai.top&quot;\n\n# \u5982\u679c\u6ca1\u6709\u4f20\u53c2\u6570\uff0c\u5219\u63d0\u793a\nif &#x5B; $# -lt 1 ]; then\n    echo &quot;\u7528\u6cd5: $0 \u57df\u540d1 &#x5B;\u57df\u540d2 ...]&quot;\n    exit 1\nfi\n\n# \u904d\u5386\u6240\u6709\u57df\u540d\nfor DOMAIN in &quot;$@&quot;; do\n    CERT_DIR=&quot;$HOME\/.acme.sh\/$DOMAIN&quot;\n    PFX_OUT=&quot;$CERT_DIR\/${DOMAIN}_ssl_compat.pfx&quot;\n\n    # \u68c0\u67e5\u8bc1\u4e66\u548c\u79c1\u94a5\u662f\u5426\u5b58\u5728\n    if &#x5B; ! -f &quot;$CERT_DIR\/$DOMAIN.cer&quot; ] || &#x5B; ! -f &quot;$CERT_DIR\/$DOMAIN.key&quot; ] || &#x5B; ! -f &quot;$CERT_DIR\/ca.cer&quot; ]; then\n        echo &quot;\u57df\u540d $DOMAIN \u7684\u8bc1\u4e66\u6216\u79c1\u94a5\u4e0d\u5b58\u5728\uff0c\u8df3\u8fc7&quot;\n        continue\n    fi\n\n    echo &quot;\u6b63\u5728\u751f\u6210 Windows IIS \u517c\u5bb9 PFX: $DOMAIN&quot;\n    openssl pkcs12 -export \\\n      -out &quot;$PFX_OUT&quot; \\\n      -inkey &quot;$CERT_DIR\/$DOMAIN.key&quot; \\\n      -in &quot;$CERT_DIR\/$DOMAIN.cer&quot; \\\n      -certfile &quot;$CERT_DIR\/ca.cer&quot; \\\n      -passout pass:$PASSWORD \\\n      -keypbe PBE-SHA1-3DES \\\n      -certpbe PBE-SHA1-3DES \\\n      -macalg SHA1 \\\n      -nomaciter\n\n    if &#x5B; $? -eq 0 ]; then\n        echo &quot;PFX \u751f\u6210\u6210\u529f: $PFX_OUT&quot;\n    else\n        echo &quot;PFX \u751f\u6210\u5931\u8d25: $DOMAIN&quot;\n    fi\n\ndone\n<\/pre>\n<p>sudo chmod +x gen_pfx.sh<\/p>\n<p>\/home\/aliketen\/scripts\/gen_pfx.sh free-ai.top<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s Encrypt \u662f\u4e00\u4e2a\u975e\u5e38\u5b89\u5168\u4e14\u503c\u5f97\u4fe1\u8d56\u7684\u8bc1\u4e66\u9881\u53d1\u673a\u6784\uff08CA\uff09\u3002 \u5b83\u63d0\u4f9b\u7684 SSL\/TLS \u8bc1\u4e66\u5728\u6280\u672f\u4e0a\u4e0e\u5546\u4e1a\u8bc1\u4e66\uff08\u5982 DigiCert&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-358","post","type-post","status-publish","format-standard","hentry","category-1"],"_links":{"self":[{"href":"https:\/\/www.free-ai.top\/index.php?rest_route=\/wp\/v2\/posts\/358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.free-ai.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.free-ai.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.free-ai.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.free-ai.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=358"}],"version-history":[{"count":3,"href":"https:\/\/www.free-ai.top\/index.php?rest_route=\/wp\/v2\/posts\/358\/revisions"}],"predecessor-version":[{"id":362,"href":"https:\/\/www.free-ai.top\/index.php?rest_route=\/wp\/v2\/posts\/358\/revisions\/362"}],"wp:attachment":[{"href":"https:\/\/www.free-ai.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.free-ai.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.free-ai.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}