Подключение к Нептуну с помощью aiogremlin
Я пытаюсь подключиться к AWS Neptune с помощью aiogremlin, но продолжаю получать ошибки сертификата SSL. Я пробовал использовать 3 разных сертификата, загруженных из Amazon Trust Repository, но ни один из них не работает. С участием
AmazonRootCA1.pem
а также
SFSRootCAG2.pem
Я продолжаю получать
File Not Found error
и с
SFSRootCAG2.cer
я получил
ssl_context.load_cert_chain(ssl.SSLError: [SSL] PEM lib (_ssl.c:4046)
.
Вот фрагмент, который я использую для взаимодействия с Нептуном.
import asyncio
from aiogremlin import DriverRemoteConnection, Graph
from .constants import NEPTUNE_ENDPOINT, CERT_DIR
async def go():
remote_connection = await DriverRemoteConnection.open(f'https://{NEPTUNE_ENDPOINT}:8182/gremlin', 'g',
ssl_certfile=CERT_DIR+'SFSRootCAG2.cer')
g = Graph().traversal().withRemote(remote_connection)
vertices = await g.V().toList()
await remote_connection.close()
return vertices
print(asyncio.get_event_loop().run_until_complete(go()))
Возникли проблемы с определением, использую ли я неправильный файл сертификата или делаю что-то еще не так.
1 ответ
Я получил ту же самую ошибку (вплоть до строки 4046 в ssl.c), когда преобразовал хранилище ключей в файл pem без раздела сертификата.
Я снова преобразовал его без флага «-nocerts», и я получил оба раздела в файле следующим образом:
Bag Attributes
friendlyName: mykey
localKeyID: ...
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
... [magic key details] ...
-----END PRIVATE KEY-----
Bag Attributes
friendlyName: mykey
localKeyID: ...
subject=C = NO, O = ..., CN = Server Administrator
issuer=C = NO, O = ..., CN = Server Administrator
-----BEGIN CERTIFICATE-----
... [magic key details] ...
-----END CERTIFICATE-----
Я также создал новый сертификат, подобный этому, который работал без проблем:
# openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem