resty-auto-ssl сертификат не работает
Я использую lua-resty-auto-ssl на моем сервере OpenResty для генерации сертификатов SSL на лету. Однако, похоже, они не работают. Есть два типа запросов к моему серверу: основной сайт или пользовательский домен, CNAME которого указывает на наш. При запросе нашего домена (назовем его) Firefox дает
SEC_ERROR_UNKNOWN_ISSUER
ошибка, тогда как при запросе личного домена это
MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT
ошибка вместо этого.
Назовем мой домен
example.org
и домен, принадлежащий пользователю
customdomain.org
.
Это конфигурация сервера:
upstream app_server {
server unix:/home/scheduler/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
# Redirect everything to https
location / {
return 301 https://$host$request_uri;
}
# Endpoint used by auto-ssl for performing domain verification with Let's Encrypt
location /.well-known/acme-challenge/ {
content_by_lua_block {
auto_ssl:challenge_server()
}
}
}
server {
server_name example.org;
listen 443 ssl http2;
listen [::]:443 ssl http2;
location @proxy_to_app {
# proxy_set_header ...
proxy_redirect off;
proxy_pass http://app_server;
}
ssl_certificate_by_lua_block {
auto_ssl:ssl_certificate()
}
ssl_certificate /etc/ssl/resty-auto-ssl-fallback.crt;
ssl_certificate_key /etc/ssl/resty-auto-ssl-fallback.key;
}
# Internal server running on port 8999 for handling certificate tasks (by auto-ssl)
server {
listen 127.0.0.1:8999;
client_body_buffer_size 128k;
client_max_body_size 128k;
location / {
content_by_lua_block {
auto_ssl:hook_server()
}
}
}
А это файл конфигурации nginx/openresty:
user root;
worker_processes auto;
pid /run/openresty.pid;
events {
worker_connections 1024;
}
http {
# ...
lua_shared_dict auto_ssl 20m;
lua_shared_dict auto_ssl_settings 64k;
resolver 67.207.67.2;
lua_ssl_verify_depth 2;
lua_ssl_trusted_certificate /etc/ssl/certs/ca-certificates.pem;
init_by_lua_block {
auto_ssl = (require "resty.auto-ssl").new()
auto_ssl:set("allow_domain", function(domain)
return true
end)
-- Use this during development otherwise the account may hit rate limiting issues
-- Remove this in production
auto_ssl:set("ca", "https://acme-staging-v02.api.letsencrypt.org/directory")
auto_ssl:init()
}
init_worker_by_lua_block {
auto_ssl:init_worker()
}
include ../sites/enabled/*;
}
Сертификаты просто не генерируются, потому что нет файла с именем
example.org
или же
customdomain.org
можно найти на
/etc/resty-auto-ssl/letsencrypt/certs
который, как я предполагаю, является местом хранения сертификатов (у меня есть еще несколько сертификатов в этом каталоге ранее, когда это работало).
SEC_ERROR_UNKNOWN_ISSUER
, это ошибка, с которой я получаю
example.org
предполагает, что используется сертификат, отличный от самоподписанного, но он не может быть сертификатом resty-auto-ssl, потому что (а) он не работает и (б), как я уже сказал, это не в
certs
каталог.
MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT
означает, что используемый сертификат является самозаверяющим, а не тем, который должен сгенерировать resty-auto-ssl, но этого не делает. Этот самозаверяющий сертификат существует, как предлагают документы, чтобы обмануть конфигурацию nginx, иначе тест завершится неудачно, если вы пропустите
ssl_certificate
линий.
редактировать:
Я удалил
auto_ssl:set("ca", "https://acme-staging-v02.api.letsencrypt.org/directory")
строка, чтобы получить настоящий сертификат, и теперь пользовательские домены работают. Я проверил каталог, в котором, как я думал, сохраняются сертификаты,
/etc/resty-auto-ssl/letsencrypt/certs/
, и нет
customdomain.org
файл, поэтому я понятия не имею, где restu-auto-ssl хранит эти сертификаты...
Но
example.org
нет. Я все еще получаю сообщение об ошибке неизвестного эмитента.