certbot LetsEncrypt
certbot LetsEncrypt генерирует следующие сертификаты, помещенные в / etc / letsencrypt / live / your-domain-name /:
cert.pem chain.pem fullchain.pem privkey.pem
cert.pem — это сертификат конечного пользователя.
chain.pem — остальная часть цепочки; в данном случае это только корневой сертификат LetsEncrypt.
fullchain.pem — это сочетание cert.pem и chain.pem. Это файл, переданный в nginx с директивой ssl_certificate.
Privkey.pem — это закрытый ключ RSA, созданный вместе с сертификатом.
Сертификаты – корневой, промежуточный сертификат, а также сертификат для домена.
sectigo
sample.pfx – бинарный файл с сертификатом сервера(открытый) и приватным сертификатом
Надо вытащить сертификат сервера(открытый) и приватный сертификат
Установка pfx сертификата на NGINX
Требуется при помощи программы openssl преобразовать *.pfx сертификат в два файла: открытый сертификат и приватный ключ.
Если нужно установить «Цепочка сертификатов» добавляем дополнительные сертификаты в конец файла. Если этого не сделать будет ошибка:
первый — сертификат для домена
второй — это промежуточный
третий — это корневой
https://support.sectigo.com/IS_KnowledgeDetailPage?Id=kA01N000000zFLY
1. Extract Certificate from P12/PFX file.
openssl pkcs12 -in sample.pfx -nokeys -out server.pem
Используем дальше файл server.pem
2. Extract your Private Key from the PFX/P12 file to PEM format.
openssl pkcs12 -in sample.pfx -nocerts -nodes -out privkey.pem // пароль somePassword
Используем дальше файл privkey.pem
3. [Download] Sectigo RSA DV Bundle [ Intermediate + Cross Signed ] Это промежуточные сертификаты от Sectigo. Должны получить файл SectigoRSADVBundle.pem
https://support.sectigo.com/IS_KnowledgeDetailPage?Id=kA01N000000rfBO
https://comodoca.my.salesforce.com/sfc/p/1N000002Ljih/a/1N0000000wpc/Dpl1Z0WPKdXMFFcWVLP4OhlPQzse22s919GMgDbM_is
Используем дальше файл SectigoRSADVBundle.pem
4. /* Удалить лишнее в server.pem файле
Bag Attributes
localKeyID: E6 92 5C 2B B6 1E A6 FB 46 9E AD 09 E0 91 C2 67 28 D0 0B D7
subject=CN = *.domain.kz
issuer=C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
*/
cat server.pem SectigoRSADVBundle.pem > fullchain.pem (Объединяем сертификат домена server.pem и сертификат корневого центра SectigoRSADVBundle.pem) sudo chown root: * sudo chmod 600 *
5. Используем полученные файлы
fullchain.pem
privkey.pem
в nginx
$ cat agis-nginx.yml version: '2.4' services: agis-nginx-scada: image: nginx:1.13 container_name: agis-nginx-scada ports: - 4001:4001 volumes: - ./src:/usr/share/nginx/html - ./conf.d:/etc/nginx/conf.d - ./ssl:/etc/ssl restart: on-failure cpus: 1 mem_limit: 1gb networks: default: external: name: agis-net
Nginx
$ cat default.conf map $http_upgrade $connection_upgrade { default upgrade; '' close; } # scada-facade server { listen 4004 ssl; listen [::]:4004 ssl; server_name agis.domain.kz; # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate ssl_certificate /etc/ssl/fullchain.pem; ssl_certificate_key /etc/ssl/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits # ssl_dhparam /path/to/dhparam.pem; # intermediate configuration. tweak to your needs. ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:E CDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256 :ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES 256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SH A:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DE S-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months) add_header Strict-Transport-Security max-age=0; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ## verify chain of trust of OCSP response using Root CA and Intermediate certs # ssl_trusted_certificate /etc/letsencrypt/live/agis.astanasu.kz/cert.pem; location / { client_max_body_size 200m; proxy_pass http://agis-scada-facade:3000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }