Как ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Ovirt ΠΈ Let’s Encrypt

Шагая ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ инфраструктуры, я Ρ€Π΅ΡˆΠΈΠ» Π΄ΠΎΠ±ΠΈΡ‚ΡŒ Π΄Ρ€Π΅Π²Π½ΠΈΠΉ ΠΈ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ вопрос β€” Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… Ρ‚Π΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, тСстировщикам, Π°Π΄ΠΌΠΈΠ½Π°ΠΌ, etc ) ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ своими Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°ΠΌΠΈ Π² ovirt’Π΅. Π’ ovirt Π΅ΡΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ΅Π³ΠΎ вопроса: сам Π²Π΅Π± интСрфСйс, noVNC консоль ΠΈ Π·Π°Π»ΠΈΠ²ΠΊΠ° ΠΎΠ±Ρ€Π°Π·ΠΎΠ² дисков.

Кнопки Β«Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π—Π°ΡˆΠΈΠ±ΠΈΡΡŒΒ» я Π½Π΅ Π½Π°ΡˆΡ‘Π», поэтому ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽ ΠΊΠ°ΠΊΠΈΠ΅ Ρ€ΡƒΡ‡ΠΊΠΈ я ΠΊΡ€ΡƒΡ‚ΠΈΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Полная инструкция ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ:

Как ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Ovirt ΠΈ Let's Encrypt

DISCLAIMER:

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ нСизвСстной ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π΄ΠΎΠΌΠ΅Π½Ρ‹ инфраструктуры ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² частных Π·ΠΎΠ½Π°Ρ… lan, local, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π§Ρ‚ΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ Π·ΠΎΠ½Π΅ ΠΌΠ½Π΅ нСизвСстно. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, вмСсто Π΄ΠΎΠΌΠ΅Π½Π° Alex-GLuck-Awesome-Company.local, ΠΌΠΎΠΆΠ½ΠΎ смСло ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½ для сайта ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Alex-GLuck-Awesome-Company.com.

Если Π²Ρ‹ Π±ΠΎΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ смоТСтС ΡƒΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ Π² своСй ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ это Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ сломаСт, Ρ‚ΠΎ Π·Π° скромныС 100 Ρ€ΡƒΠ±Π»Π΅ΠΉ Π² Π³ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½ для инфраструктуры aglac.com.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π³ΠΎΠ΄Π½Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½Ρ‹ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·ΠΎΠ½Π°Ρ…:

1. Π£ вас Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ сСрвисы выходящиС Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ΅ пространство: Π²ΠΏΠ½, ΠΎΠ±ΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ(seafile, nextcloud) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. ΠΠ°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° Ρ‚Π°ΠΊΠΈΡ… сСрвисах ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выглядит ΠΊΠ°ΠΊ тяп-ляп, ΠΈ ΠΎΡ‚ MitM Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒΡΡ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ слоТно(Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅Ρ‚).

Или Π²Π½ΡƒΡ‚Ρ€ΠΈ офиса Ρƒ вас ΠΎΠ΄ΠΈΠ½ адрСс сСрвиса, Π° ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈ связи эти Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Π½Π° Ρ‡Ρ‚ΠΎ тратятся наши ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ рСсурсы спСциалистов. Ну ΠΈ сотрудникам приходится Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ адрСса, Ρ‡Ρ‚ΠΎ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

2. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСсплатныС Ρ†Π΅Π½Ρ‚Ρ€Ρ‹ сСртификации для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡˆΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… сСрвисов.

БобствСнный PKI β€” это сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, 100 Ρ€ΡƒΠ±Π»Π΅ΠΉ Π² Π³ΠΎΠ΄ Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использованиС PKI ΠΎΡ‚ бСсплатных Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ² сСртификации с Π»ΠΈΡ…Π²ΠΎΠΉ ΠΎΠΊΡƒΠΏΠ°ΡŽΡ‚ врСмя сотрудников, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

3. ΠŸΡ€ΠΈ использовании собствСнного Ρ†Π΅Π½Ρ‚Ρ€Π° сСртификации Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°Π»ΠΊΠΈ Π² колёса вашим ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌ сотрудникам ΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с BYOD (приносят свои Π½ΠΎΡƒΡ‚Ρ‹, Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Ρ‹) ΠΈ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… устройствами. Они приносят ΠΌΠ°ΠΊΠΈ, линуксы, Π°Π½Π΄Ρ€ΠΎΠΉΠ΄Ρ‹, IOS, Π²ΠΈΠ½Π΄Ρƒ β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла.

Π’ΠΎ всём, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΈ Π±Π°Π½ΠΊΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ суровыми энтрпрайзами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠΈΠ΅ΡΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности, ΡƒΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ смогут ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ сСрвис для своих сотрудников.

Для Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Ρ†Π΅Π½Ρ‚Ρ€Ρ‹ сСртификации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ сумму ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… CA сСртификат(Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Β«root signing serviceΒ»).

Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π³ΠΎΠ΄Π½Π΅ΠΉ(самоС Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π» Π²Π°ΠΌ), Π½ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π΅ ΠΎΠ± этом.

Π‘ΡƒΡ‚ΡŒ, Π΄Π° Π΄Π΅Π»ΠΎ…

Π’ΠΠ˜ΠœΠΠΠ˜Π•! Если Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ сСртификат CA ΠΎΡ‚ Let’s Encrypt Π² список Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… для ovirt’Π°, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΡˆΠΈΡ… систСм!

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π½Π° Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β€” интСрфСйсы ΠΎΠ²ΠΈΡ€Ρ‚Π° Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ это плохая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Ρ‚.ΠΊ. Π² этом Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ практичСского смысла, Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ бСзопасности создаёт.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сСртификат Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ нашСм бастион-хостС, послС Ρ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ сСртификат ΠΈ ΠΊΠ»ΡŽΡ‡ Π½Π° наш хост с ovirt-engine.

ДобавляСм внСшний адрСс нашСго бастион-хоста Π² днс с нашим ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ²ΠΈΡ€Ρ‚Π° ovirtengine.example.com, установку certbot ΠΈ nginx я ΠΎΡΡ‚Π°Π²Π»ΡŽ Π·Π° ΠΊΠ°Π΄Ρ€ΠΎΠΌ(ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Ρ…Π°Π±Ρ€Π΅ ΡƒΠΆΠ΅ описано).

НастраиваСм ндТинкс вСрсии >=1.15.7

/etc/nginx/conf.d/default.conf

server {
    server_name _;
    listen 80 default_server;
    location /robots.txt { alias /usr/share/nginx/html/robots.txt; }
    location /.well-known {
        root /usr/share/nginx/html;
    }
    location / {
        return 444;
    }
}

server {
    server_name _;
    listen 443 ssl http2 default_server;
    location /robots.txt { alias /usr/share/nginx/html/robots.txt; }
    location /.well-known {
        root /usr/share/nginx/html;
    }

    ssl_certificate /etc/nginx/ssl/$ssl_server_name/fullchain.pem; 
    ssl_certificate_key /etc/nginx/ssl/$ssl_server_name/privkey.pem;

    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;

    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;

    # позволяСм сСрвСру ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ OCSP-ΠΎΡ‚Π²Π΅Ρ‚Ρ‹, Ρ‚Π΅ΠΌ самым ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страниц Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;

    location / {
        return 444;
    }
}

ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ наш сСртификат ΠΈ ΠΊΠ»ΡŽΡ‡:

certbot certonly --nginx -d ovirtengine.example.com

АрхивируСм наш сСртификат ΠΈ ΠΊΠ»ΡŽΡ‡:

tar Phczf /tmp/ovirtengine.example.com.tgz /etc/letsencrypt/live/ovirtengine.example.com

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ с бастион-хоста Π°Ρ€Ρ…ΠΈΠ², Π·Π°Π»ΠΈΠ²Π°Π΅ΠΌ Π½Π° наш ΠΎΠ²ΠΈΡ€Ρ‚-Π΅Π½ΠΆΠΈΠ½:

scp bastion-host:/tmp/ovirtengine.example.com.tgz /tmp/
scp /tmp/ovirtengine.example.com.tgz ovirtengine.example.com:/

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ†Π΅Π»ΠΈ

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ распаковываСм наш Π°Ρ€Ρ…ΠΈΠ² ΠΈ создаём симлинки для упрощСния понимания систСмы располоТСния Ρ„Π°ΠΉΠ»ΠΎΠ²:

tar Pxzf /ovirtengine.example.com.tgz && rm -f ovirtengine.example.com.tgz
mkdir -p /etc/letsencrypt/live
ln -f -s /etc/letsencrypt/live /etc/pki/letsencrypt

НастраиваСм встроСнный pki Π² ΠΎΠ²ΠΈΡ€Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСртификатов использовалось Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСртификатов java(openjdk):

cat << EOF > /etc/ovirt-engine/engine.conf.d/99-setup-pki.conf 
ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts"
ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD=""
EOF

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ CA ΠΎΡ‚ let’s encrypt’Π° Π² der Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ добавляСм Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСртификатов java trust store ΠΎΠ²ΠΈΡ€Ρ‚Π° (это Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ сСртификатов, такая систСма ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² java):

openssl x509 -outform der -in /etc/pki/letsencrypt/ovirtengine.example.com/chain.pem -out /tmp/ovirtengine.example.com.chain.der
keytool -import -alias "Let's Encrypt Authority X3" -file /tmp/ovirtengine.example.com.chain.der -keystore /etc/pki/ovirt-engine/.truststore -storepass $(grep '^ENGINE_PKI_TRUST_STORE_PASSWORD' /etc/ovirt-engine/engine.conf.d/10-setup-pki.conf | cut -f 2 -d '"')
rm -f /tmp/ovirtengine.example.com.chain.der

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ настройки SSL для apache, добавляСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ симлинков ΠΈ ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для CA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ сСртификаты (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ систСмный Π½Π°Π±ΠΎΡ€ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… CA для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ):

sed -r -i 's|^(SSLCACertificateFile.*)|#1|g' /etc/httpd/conf.d/ssl.conf
sed -r -i '0,/(^#?SSLCACertificateFile.*)/ s//1nOptions FollowSymlinks/' /etc/httpd/conf.d/ssl.conf

ПослС Ρ‡Π΅Π³ΠΎ Π±Π΅ΠΊΠ°ΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π½Π° всякий случай ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, сгСнСрированныС Ρ‡Π΅Ρ€Π΅Π· PKI ovirt’Π° автоматичСский ΠΈ подмСняСм симлинками Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚ Let’s Encrypt:

ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/fullchain.pem /etc/pki/ovirt-engine/apache-chain.pem
services=( 'apache' 'imageio-proxy' 'websocket-proxy' )
for i in "${services[@]}"; do
cp /etc/pki/ovirt-engine/certs/$i.cer{,."$( date +%F )".bak}
cp /etc/pki/ovirt-engine/keys/$i.key.nopass{,."$( date +%F )".bak}
ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/privkey.pem /etc/pki/ovirt-engine/keys/$i.key.nopass
ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/cert.pem /etc/pki/ovirt-engine/certs/{apache,imageio-proxy,websocket-proxy}.cer
done

ВосстанавливаСм SElinux контСксты Π½Π° Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ пСрСзапускаСм наши сСрвисы (httpd, ovirt-engine, ovirt-imageio-proxy, ovirt-websocket-proxy):

restorecon -Rv /etc/pki
systemctl restart httpd ovirt-engine ovirt-imageio-proxy ovirt-websocket-proxy

httpd β€” Π²Π΅Π± сСрвСр apache
ovirt-engine β€” Π²Π΅Π± интСрфСйс ovirt
ovirt-imageio-proxy β€” Π΄Π΅ΠΌΠΎΠ½ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² дисков
ovirt-websocket-proxy β€” сСрвис для Ρ€Π°Π±ΠΎΡ‚Ρ‹ noVNC консоли

Всё Π²Ρ‹ΡˆΠ΅ пСрСчислСнноС Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π½Π° вСрсии ΠΎΠ²ΠΈΡ€Ρ‚Π° 4.2.

АвтообновлСниС сСртификатов Π½Π° ovirt

Богласно Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ ΠΏΠΎ бСзопасности, связи ΠΌΠ΅ΠΆΠ΄Ρƒ бастион-хостом ΠΈ ΠΎΠ²ΠΈΡ€Ρ‚ΠΎΠΌ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ, Π° сСртификат выдаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° 3 мСсяца. Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚ появляСтся спорный ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ сСртификатов Ρƒ мСня.

Π£ мСня Π΅ΡΡ‚ΡŒ ансибл ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся Π½Π° foreman Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 5 ΡƒΡ‚Ρ€Π° ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΎΠ²ΠΈΡ€Ρ‚, провСряСт срок дСйствия сСртификата ΠΈ Ссли Π΄ΠΎ истСчСния ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ мСньшС 5 Π΄Π½Π΅ΠΉ, ΠΈΠ΄Ρ‘Ρ‚ Π½Π° бастион-хост ΠΈ запускаСт ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ сСртификата.

ПослС обновлСния сСртификата ΠΎΠ½ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, скачиваСт Π½Π° хост Ρ„ΠΎΡ€ΠΌΠ°Π½Π° ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° хост ΠΎΠ²ΠΈΡ€Ρ‚Π°. ПослС Ρ‡Π΅Π³ΠΎ восстанавливаСт SElinux контСксты Π½Π° Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ пСрСзапускаСм наши сСрвисы.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com