pyopenssl, скрученный с помощью let's encrypt: цепочка сертификатов сервера неполная

Я хочу использовать let’s encrypt на своем скрученном сервере, но в последней версии 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)

person Mostafa    schedule 04.08.2016    source источник


Ответы (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).

person mithrandi    schedule 06.08.2016

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

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)
person Mostafa    schedule 04.08.2016