У меня есть приложение Rails, которое использует gem Rails Let's Encrypt для генерации SSL-сертификатов для пользовательских доменов.
Камень действительно прост в использовании. После установки / настройки я могу сгенерировать сертификат, и данные будут сохранены в базе данных.
Я хочу сохранить certificate CRT
и certificate KEY
в соответствующей папке NGINX: /etc/nginx/ssl/
После этого я хочу:
Содержание:
server {
listen 80;
listen 443 ssl;
server_name www.customdomain.com;
ssl_certificate /etc/nginx/ssl/customdomain.crt;
ssl_certificate_key /etc/nginx/ssl/customdomain.key;
passenger_enabled on;
root /home/ubuntu/myapp/current/public;
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/javascript
gzip_disable "msie6";
location ^~ /assets/ {
expires max;
add_header Cache-Control public;
}
}
Я сделал эти шаги вручную, и SSL работает нормально. Как это сделать программно?
Помните, что шаги начинаются, когда с Rails я генерирую сертификат. Должен быть какой-то способ выполнить эти шаги. Я ценю любую помощь! Tks!
Мое окружение:
ruby -v: ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
rails -v: Rails 4.2.3
nginx -v: nginx/1.8.0
passenger -v: Phusion Passenger version 5.0.10
Ubuntu 14.04.2 LTS
Amazon EC2 instance (without load balancer, because LB requires only one certificate in the https)
РЕДАКТИРОВАТЬ 1
Возможно, есть способ использовать шаблон с подстановочными знаками. Вместо того, чтобы создавать один виртуальный хост для каждого домена, я создаю только один файл, например:
/etc/nginx/sites-enabled/wildcard
В этом файле у меня есть такая модификация:
server_name {{customdomain_url}};
ssl_certificate /etc/nginx/ssl/{{customdomain}}.crt;
ssl_certificate_key /etc/nginx/ssl/{{customdomain}}.key;
Если это возможно, лучше, потому что работа заключается только в сохранении файлов сертификата. И не потребует перезагрузки nginx .
РЕДАКТИРОВАТЬ 2 - Путь
Я создал сценарий оболочки в /user/local/bin/myscript.sh
и в этом сценарии я создаю файл vhost в /etc/nginx/sites-available/
для тестирования. В rails console
я запускаю код: sudo /user/local/bin/myscript.sh mydomain.com
и сценарий оболочки создает файл правильно.
Это был тест, но работает. Я сделаю окончательную версию и опубликую здесь окончательное решение.