Назад | Перейти на главную страницу

настроить CouchDB с помощью сертификата Lets Encrypt SSL

Что бы я хотел сделать: Теперь я использую самоподписанный сертификат SSL, который отлично работает. Но я бы хотел заменить их на официальную из lets encrypt.

Что у меня есть (самоподписанный сертификат): Вот вывод важных настроек (local.ini) для ssl, которые у меня есть:

[daemons]
; enable SSL support by uncommenting the following line and supply the PEM's below.
; the default ssl port CouchDB listens on is 6984
httpsd = {couch_httpd, start_link, [https]}

[ssl]
cert_file = /etc/couchdb/certs/server.crt   // these are my self made certificates
key_file = /etc/couchdb/certs/server.key    // these are my self made certificates

; set to true to validate peer certificates
verify_ssl_certificates = false
; Path to file containing PEM encoded CA certificates (trusted
; certificates used for verifying a peer certificate). May be omitted if
; you do not want to verify the peer.
;cacert_file = /full/path/to/cacertf
; The verification fun (optional) if not specified, the default
; verification fun will be used.
;verify_fun = {Module, VerifyFun}
; maximum peer certificate depth
ssl_certificate_max_depth = 1

Что я пробовал (давайте зашифровать): После выполнения документации позволяет зашифровать у меня есть папка /etc/letsencrypt/live/[domain] со следующими файлами:

-cert.pem       // seems to be the public certificate
-chain.pem      // seems to be the public certificate from the keychain
-fullchain.pem  // seems to be the cert.pem + chain.pem
-privkey.pem    // seems to be the private certificate

Поэтому я попытался заменить новые сертификаты на старые в моем local.ini

[ssl]
cert_file = /etc/letsencrypt/live/[domain]/cert.pem      // new certificate
key_file = /etc/letsencrypt/live/[domain]/privkey.pem    // new certificate

Эта проблема: После перезапуска CouchDB порт 5984 без SSL все еще работает. Но с SSL на порту 6984 я получаю connection reset error в хроме. PS: Я также использую те же сертификаты letsencrypt для моего nginx, где они отлично работают.

Любые идеи?

Информация об отладке Openssl:

1) С SSL и самоподписанным сертификатом я получаю распечатку сертификата и много информации, которую я ввел один раз.

2) Без SSL и letsencrypt openssl s_client -connect localhost:5984

CONNECTED(00000003)
140581663061872:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:795:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 207 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE

3) С SSL и letsencrypt openssl s_client -connect localhost:6984

CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 207 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE

с диваномDB 1.6.x

скопировать файлы /etc/letsencrypt/archive/xxxx в /var/lib/couchdb/cert1/

Проверить права доступа для CouchDB

Поместите следующие значения в /usr/local/etc/couchdb/local.ini. Обратите внимание, что следующие папки соответствуют указанной выше папке, в которую было скопировано.

cert_file = /var/lib/couchdb/cert1/cert1.pem
key_file = /var/lib/couchdb/cert1/privkey1.pem
cacert_file = /var/lib/couchdb/cert1/fullchain1.pem```

Как заставить https ssl работать на CouchDB 2.3.0 в Ubuntu 18.04:

  1. Файл настроек находится по адресу: /opt/couchdb/etc/local.ini
  2. Контейнер [deamons] из исходного вопроса не нужен.
  3. Только копирование файлов в папку couchdb (см. Ответы frederics) и изменение владельца файла (с помощью chown couchdb: couchdb) на пользователя couchdb - единственное, что работает. (Символьные ссылки или глубокие ссылки непосредственно на папку letsencrypt не работают).
  4. Не забудьте перезапустить couchdb после редактирования в local.ini

    systemctl stop couchdb; systemctl start couchdb

  5. Загляните в couchdb на предмет ошибок запуска с помощью tail -f /opt/couchdb/var/log/couchdb.log

  6. Убедитесь, что порт 6984 не защищен брандмауэром, разрешите ли ufw 6984

  7. Теперь перейти https://yourdomain.com:6984 и couchdb будет работать через https.

  8. Не забудьте повторить шаг 3, когда letsencrypt обновляет сертификаты.

Я нашел только следующие варианты:

  • Используйте CouchDB 2.0
  • или используйте прокси, например nginx