在 python/flask 中使用 .der 证书
using .der certificate in python/flask
我有一个 python flask 应用程序,我在其中使用 ssl 创建了一个证书和密钥文件,并将其放入代码中,如下所示
if __name__=='__main__':
context=('cert.crt','keys.key')
app.run('0.0.0.0',ssl_context=context,debug=True)
但是它们无效。在我部署代码的服务器中,有 2 个文件 'sslca-chain.der'
和 'SSLCA-Chain.pem'
。我如何在代码中使用它而不是上面的代码?
你提到的两个文件是同一个东西(链证书)只是格式不同。
最好配置一个反向代理(如 nginx)来处理 SSL 内容,而不是将其包含在您的 flask 应用程序中。
Python 仅本地处理 PEM
格式文件。
但是,如果必须 - 您需要两个文件 - 证书文件和密钥文件。
如果您从第三方 CA 获得证书,那么他们会为您提供证书文件。
密钥文件始终在您身边,应保密。
由于您有一个证书链,您必须为应用程序提供自定义上下文并将所有文件包含在您的链中,因为 load_cert_chain
method 只接受一个证书文件参数。
所以,简而言之,您需要做的是:
- 确保您的 PEM 文件包含您的服务器证书。
- 使用 PEM 文件和您的密钥文件创建自定义上下文。
- 将此自定义上下文传递给 Flask
PEM 文件只是一个包含特定顺序的所有证书的文本文件;顺序是:
-----BEGIN CERTIFICATE-----
(Your Primary SSL certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Intermediate certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Root certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
和 -----END CERTIFICATE-----
行很重要,应该包括在内
一旦您确认您的 PEM 文件包含您的服务器证书,下面是您如何为 flask 配置它:
import ssl
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) # use TLS to avoid POODLE
ctx.load_cert_chain('/path/to/sslca-chain.pem', '/path/to/server.key')
app.run('0.0.0.0',ssl_context=ctx,debug=True)
我有一个 python flask 应用程序,我在其中使用 ssl 创建了一个证书和密钥文件,并将其放入代码中,如下所示
if __name__=='__main__':
context=('cert.crt','keys.key')
app.run('0.0.0.0',ssl_context=context,debug=True)
但是它们无效。在我部署代码的服务器中,有 2 个文件 'sslca-chain.der'
和 'SSLCA-Chain.pem'
。我如何在代码中使用它而不是上面的代码?
你提到的两个文件是同一个东西(链证书)只是格式不同。
最好配置一个反向代理(如 nginx)来处理 SSL 内容,而不是将其包含在您的 flask 应用程序中。
Python 仅本地处理 PEM
格式文件。
但是,如果必须 - 您需要两个文件 - 证书文件和密钥文件。
如果您从第三方 CA 获得证书,那么他们会为您提供证书文件。
密钥文件始终在您身边,应保密。
由于您有一个证书链,您必须为应用程序提供自定义上下文并将所有文件包含在您的链中,因为 load_cert_chain
method 只接受一个证书文件参数。
所以,简而言之,您需要做的是:
- 确保您的 PEM 文件包含您的服务器证书。
- 使用 PEM 文件和您的密钥文件创建自定义上下文。
- 将此自定义上下文传递给 Flask
PEM 文件只是一个包含特定顺序的所有证书的文本文件;顺序是:
-----BEGIN CERTIFICATE-----
(Your Primary SSL certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Intermediate certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Root certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
和 -----END CERTIFICATE-----
行很重要,应该包括在内
一旦您确认您的 PEM 文件包含您的服务器证书,下面是您如何为 flask 配置它:
import ssl
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) # use TLS to avoid POODLE
ctx.load_cert_chain('/path/to/sslca-chain.pem', '/path/to/server.key')
app.run('0.0.0.0',ssl_context=ctx,debug=True)