ααΎαααΆαααααΌαααααΆααααααα’α αααααΆαα ααΆαααααααα αααα»αααΆααααααα α α·ααααααα αααααα½ααα»ααΆα αα·αααΊα αΆαα - αααααααΆαααΆααα·ααΆααα·αα αΆαααΆα α αααααα±ααΆααααααΆαααα ααΆααΈ (α’αααα’αα·αααααα α’αααααΆααααα α’ααααααααααααααα) ααΎααααΈααααααααααααΆαααΈααα·αααα·ααααααα½ααααααα―αααΆαααα Ovirt ααΆααααΆαααΆαα»ααΆα αααΎααααα αΆαααΆα αααααΌαααααααα ααΆααααααααααΎααααΈαααααααΆααααα αΆαααααααα»αα α ααα»α αααααΆαααααααΆααααα½αααΆ αα»αααΌα noVNC αα·αααΆααααα ααααΌαααΆαααΆαα
αααα»ααα·αααΆαααααΎααααΌαα»α βMake It Badβ αα ααΌα αααααααα»ααααα»ααααα αΆαα’αααααΌααααΌαα»ααα½αααΆααααααα»αααΆαααααααααΆαααΎααααΈαααααααΆααααα αΆαααα ααΆαααααΆαααααααααΆααααααααΆααα

ααΆαααα·ααα:
αα»ααααα αΆααααααΎα αααα»αα ααααΆααααΆαααΆαααα α·ααααα»αααΆααααααα’αααα ααααααΆααα·ααααααΆαααααΆααα ααα»αααα½αα ααα½αααααα·αααααΆααα αααααααα»α αααα αααααΆαα ααΆααααααααααααΌαααΆααααααΎαα‘αΎααα αααα»ααααααα―ααα α‘αΆα αααα»ααααα»α αα·αααΌα αααααα ααΎα
αααα»ααα·αααΉαααΆα’αααΈαααααΆααΆαααααα»αααΈααΆαααααΎααααΆαααααααααααααΆααααα αααα»ααααααααΆααΆααααααααα α§ααΆα ααα αααα½αα±ααααα Alex-GLuck-Awesome-Company.local α’αααα’αΆα ααααΎααααααααΆααααα ααααααααααααα»αα αα»α Alex-GLuck-Awesome-Company.com ααααα»ααααα·ααΆαα
ααααα·αααΎα’αααααααΆα ααΆα’αααααΉααα·αα’αΆα ααΆαααΆαααααα αααα»αααααΆαααααααα’ααα α αΎαααΆααΉαααααΎα±ααααΌα α’αααΈαα½α αααααΆαααααααααΆαα 100 rubles αα·α αα½α αααα»ααα½αααααΆα α’αααα’αΆα αα·ααααααΆα ααααα‘αααααααΆααα αααααΆαα ααΆαααααααα aglac.com α
α ααα»α’αααΈααΆαααα ααααα αααΎαααΆααααα»αααΆαααααΎααααΆααααααα αααα»ααααααααΆααΆαααα
α‘. α’αααααΆαααααα’αααααΆαααααΆαααααααα’αΆα α αΌαααααΎααααΆααααΆαααΆααΆααΆαααα vpn, ααΆαα αααααααα―αααΆα (seafile, nextcloud) αα·ααααααααααα ααΆαααα‘αΎαααΆαα’αα·αααααΈαα ααΆα αααααΎααααΆααααααααααααΆααααααΆααΊααΆααΆααα·αααααααΉααααααααααα·α ααααα½α α αΎαααΎαααΉααα·αααΆαααΆααααααΆααααΉαααΆαααΆααααα αΆααααα MitM αα ααΈαααααααΆαα·ααΆα (αα·αααααα·αααΆαα·ααΆααα)α
α¬α’αααααΆαα’αΆααααααΆαααααΆαααααα½ααα αααα»αααΆαα·ααΆααα αα·ααα½ααααααΈα’ααΈαααΊαα·α α αΎαααΆαααααΆααααΆαααααααααΌααααααααΆ αααααααΎα±ααααααααααΆαααααΆαα―αααααααααΆαααααα·αααααααΎαα ααΆααΆααααααΎαααΆαα αα·αααα·αααααΌαα αα αΆαα’αΆααααααΆαααααααααααΆ αααααΆααΆαααΆααα’αΆαααα’α½αα
2. α’αααα’αΆα ααααΎα’αΆααααΆαααα·ααααΆαααααααααα₯ααα·αααααααΎααααΈα’αα·αααααΈαααααΆααααααΆααααα»αααααα’αααα
PKI ααααΆαααααα½αααααα’αααααΊααΆααααΆαααααααααααΌαααΆααααα½α; 100 rubles αααα»ααα½αααααΆααααααΆααα±ααΆαααααΎ PKI ααΈα’αΆααααΆαααααααΆαααααα₯ααα·αααααα αααΎαααΆαααΆααααααααΆαααααααΆαααααααααΆαααααα·αααα·ααααα’αΆα α αααΆαααΆααΎααΆαααΆαααααααααα
3. αα αααααααΎα’αΆααααΆαααα·ααααΆααααααααααΆαααααα½αααααα’ααα α’αααααΉαααΆαααα»αααααααΆαααααα»ααααα·α αα·ααα ααΆααΈααΈα ααααΆαααααα’ααααααα ααααααΎααΆαααΆαα½α BYOD (ααΆααααα»αααααΌααααα½ααα ααΌαααααα αααααααααααΆαααααα½ααααααα½ααα) α αΎαα’ααααα·αα’αΆα αααααααααα§ααααααααααα½αααααΆαααα αα½αααααΆαααΆααα Macs, Linux, Androids, iOS, Windows - ααΆααααΆαα ααα»α ααΆαα½ααααα»αααΆαααΆαααααα½αααααααααααααα
αα αααα»αα’αααΈααααααααΆα αα·αααΆααααΆαααααΈααΎαααα α αΎααααΆααΆααααααΆααα ααααΆαααα’αΆααααααααααααααααααΆααααααΎαααααααααΆαααααα·αα»αααΉααα·αα’αΆα αααααα’ααααΆαααααααααΆαααα»ααααα·ααααααα½αααααΆαααα
αααααΆαααα½ααα ααΆαα’αΆααααΆααα αααα·ααααΆααααααααααααααΆαααααα’αΆα α α»αα αααααααΆααΎαα·ααααΆαααααα CA αααααα½ααααααα»αα ααα½αααΆααααΆαααα½α (Google "ααααΆα α»αα αααααααΆααΆ root") α
ααΆαα ααα»ααααααααααααΆα ααα»α’αααΈααΆαααΆααΆααΆαααα ααααα αααΎαααΆααααα»αααΆαααααΎααααΆαααααααΆααΆααα (α’αααΈαααααααΆαααααα»ααααααΊααΆααΆααΆααααα’ααα) ααα»ααααα’αααααααααα·αααααα·ααΆαα’αααΈααΏααααααα
α ααα»α ααΊ...
ααα α·ααααα»αααΆαα! ααααα·αααΎα’ααααααααααα·ααααΆαααααα Let's Encrypt CA αα αααααΈαααα’αΆα αα»αα α·αααααΆααααα ovirt ααΆα’αΆα αααααΆααααααα»ααααα·ααΆαααααααααααααααα’ααα!
ααΏαααααΌααααα’αααααααΌαααα α·ααααα»αααΆααααΊααΆααΆαααΆααααααΆαα ααα»α αααααΆαα Ovirt αα α’ααΈαααΊαα·αααΊααΆααΆαα’αα»αααααα·αααα’ ααΈααααα ααΆααααΆααααααΆααααααααα α αΎααααααΎαααΆαααααΆαααα αααααααααααα·αα»αααααααα
ααΌα αααα α’αααααααΌαααα½αααΆααα·ααααΆαααααααα ααΎαααΆαααΈααααααΎαααααΆαααααααΎααα½α α αΎααααααΆααααααααααα·ααααΆαααααα αα·ααααα ααΆαααααΆαααΈαααααααΎααααααααΎαααΆαααΈαα’αΌαααα
ααΎαααααααα’αΆααααααΆαααΆααααα αααααΆαααΈααααααΆαααααααΎααα dns ααΆαα½αααΉαααααα ovirt ααααααΎαα ovirtengine.example.comαααα»αααΉααα»αααΆαααα‘αΎα certbot αα·α nginx αα ααΈαααααααΆα (ααααααααΎαααααααΌαααΆααα·αααααΆαα½α α αΎααα ααΎHabrΓ©)α
ααΆαααα‘αΎααααα njinx >=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
ααΆααααααααααΆαααΈ bastion host α αΎααααα αΌαααΆαα αααα»ααααΆαααΈα ovirt ααααααΎαα
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 αααααααΆααααααΆαα½ααααα»α Ovirt ααΌα αααα ααααΆαααα·ααααΆαααααα 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 α αΎαααααααααΆαα αααα»α ovirt java trust store certificate 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 αααααααααΆαααΆααααααααΎααααΈααΆαααα symlinks αα·ααα»ααααΆαααΆαααααααααααΆαα CA αααααααΌααα·αα·ααααα·ααααΆαααααα (ααΆαααααΆαααΎα αααα»ααααααααααα CAs αααα’αΆα αα»αα α·αααααΆαααΉαααααΌαααΆαααααΎαααααΆααααΆααααααααααΆαα):
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
ααΆααα’ααααΆαααΎααααΌαααΆαααΆααααααα ααΎ Ovirt αααα 4.2 α
ααΆααααααααααααααααααααα·αααα·ααααΆαααααααα ααΎ ovirt
ααααα ααΆαααΆαα’αα»αααααα»ααααα·ααΆαααα’ αα·ααα½αααΆαααααΆαααααααααΆα bastion host αα·α ovirt αα α αΎααα·ααααΆααααααααααΌαααΆαα ααααααΉααα 3 ααααα»αααααα αααααΊααΆααααααααααααα αΆα ααααΌαα ααααΆαααΎαα‘αΎαα’αααΈααααααααααα»αααΆαα’αα»ααααααΆααααααα·ααααΆααααααα
αααα»αβααΆαβααααα βαααβαααβα’αΆα βααααΎβααΆαβαααβααααΎαααΆαβααΎβαααααΆαβαααα»αβααΆβαααβααΆααβααααβαα βαααα α₯ ααααΉα ααΆαβααΆααα·ααΆαα ααααα αααααααα ovirt αα·αα·ααααααααααα»ααααΆααααα·ααααΆαααααα α αΎαααααα·αααΎαα ααααα·α ααΆα 5 αααααα»αααααα»αααααα ααΆααΉααα ααΆαα bastion host α αΎαα αΆααααααΎαααααΎαα αα α»ααααααααΆααα·ααααΆααααααα
αααααΆααααΈααααΎαα αα α»ααααααααΆααα·ααααΆαααααα ααΆαααααΆαα»αααα―αααΆααααααΆαααααΆαα αααΆαααΈα Forman α αΎααααααΆααΆαα αααΆαααΈα Ovirt α αααααΆααααΈααα SElinux ααααΆαααα·αααα ααΎα―αααΆα α αΎαα αΆααααααΎαααααΆααααααααααΎαα‘αΎααα·αα
ααααα: www.habr.com
