pyopenssl, скрученный с давайте шифровать: цепочка сертификатов сервера неполна

Я хочу использовать шифрование на моем витом сервере, но в последней версии Chrome для Android я получаю:

the identity of this website has not been verified

Аналогичное сообщение о последнем Firefox для Ubuntu.

Мой отчет SSL от ssllabs.com:

Цепочка сертификатов этого сервера неполная. Оценка ограничена до B.

Мой соответствующий код:

from OpenSSL import crypto

from twisted.internet import ssl

privkey=open('/etc/letsencrypt/live/mindolia.com/privkey.pem', 'rt').read()
certif=open('/etc/letsencrypt/live/mindolia.com/fullchain.pem', 'rt').read()

privkeypyssl=crypto.load_privatekey(crypto.FILETYPE_PEM,privkey)
certifpyssl=crypto.load_certificate(crypto.FILETYPE_PEM,certif)

contextFactory=ssl.CertificateOptions(privateKey=privkeypyssl, certificate=certifpyssl)

2 ответа

Самый простой способ создать CertificateOptions в том числе цепочка сертификатов должна использовать библиотеку pem, например:

from pem.twisted import certificateOptionsFromFiles

contextFactory = certificateOptionsFromFiles(
    '/etc/letsencrypt/live/mindolia.com/privkey.pem',
    '/etc/letsencrypt/live/mindolia.com/fullchain.pem')

Кроме того, для прямой интеграции Let's Encrypt с Twisted вы можете использовать txacme при условии, что ваше приложение Twisted работает на порту 443 (или на него перенаправлен порт 443).

решение здесь

from OpenSSL import crypto

from twisted.internet import ssl

privkey=open('/etc/letsencrypt/live/mindolia.com/privkey.pem', 'rt').read()
certif=open('/etc/letsencrypt/live/mindolia.com/cert.pem', 'rt').read()
chain=open('/etc/letsencrypt/live/mindolia.com/chain.pem', 'rt').read()

privkeypyssl=crypto.load_privatekey(crypto.FILETYPE_PEM,privkey)
certifpyssl=crypto.load_certificate(crypto.FILETYPE_PEM,certif)
chainpyssl=[crypto.load_certificate(crypto.FILETYPE_PEM,chain)]
contextFactory=ssl.CertificateOptions(privateKey=privkeypyssl,certificate=certifpyssl,extraCertChain=chainpyssl)
Другие вопросы по тегам