我正在尝试使用 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_mode
和load_verify_locations
行,则不再提示我输入 CAC 凭据,网站会加载并打印文本。
我希望按照前面的序列操作,以便选择一个有效的凭证,但是我不知道如何让浏览器信任 DoD CA 提供的服务器证书。
我如何在 Windows 10 上实现此目的?