无法使用自签名服务器证书和 DoD CA 证书访问 HTTPS 页面

无法使用自签名服务器证书和 DoD CA 证书访问 HTTPS 页面

我正在尝试使用 Python 微框架创建一个本地 Web 服务器Flask,该微框架使用 DoD CAC 上的 PKI。

我已经创建了自签名根 CA 和服务器证书以及密钥,如下所示一组说明。然后我从这里分别是:

  • 国防部识别号 CA-49
  • 国防部电子邮件 CA-50

从那里我加载了以下基本的“hello world”应用程序:

import ssl
from flask import Flask

app = Flask(__name__)

@app.route("/")
def main():
    return "Hello World"

if __name__ == '__main__':
    ctx = ssl.SSLContext(ssl.PROTOCOL_TLS)
    ctx.verify_mode = ssl.CERT_REQUIRED
    ctx.load_verify_locations('DODIDCA_49.pem')
    ctx.load_cert_chain('localhost.crt', 'localhost.key')
    app.run(ssl_context=ctx)

它运行正常https://127.0.0.1:5000/,当我通过 Microsoft Edge 访问它时,它会提示我输入 CAC 凭据(我可以选择使用任一证书并输入我的 PIN)。输入 PIN 后,页面会重新加载并显示该网站不安全。如果我删除verify_modeload_verify_locations行,则不再提示我输入 CAC 凭据,网站会加载并打印文本。

我希望按照前面的序列操作,以便选择一个有效的凭证,但是我不知道如何让浏览器信任 DoD CA 提供的服务器证书。

我如何在 Windows 10 上实现此目的?

相关内容