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;
}
}