Prämisse
- Sie haben einen VPS-Server gekauft, z. B. Alibaba Cloud Global Station ECS, AWS EC2, Azure VM, GCP Compute usw.
- Die Sicherheitsgruppe hat die Ports 80 und 443 geöffnet und die Zugriffsquelle ist auf 0.0.0.0/0 eingestellt
- Der Domänenname wurde mit einem A-Eintrag festgelegt, der auf den aktuellen Betriebsserver verweist. Wenn Sie aws ec2 verwenden, steht ein öffentliches IPv4-DNS zur Verwendung zur Verfügung.
Installieren Sie Acme.sh und beantragen Sie Schritt für Schritt ein Zertifikat
Ubuntu – EasyWay
cat >> install-CA.sh << EOF
#!/bin/bash
rm -rf /etc/nginx/cert/ && mkdir /etc/nginx/cert/
read -p "Enter your domain: " domain
rootDomain=\`echo $domain|cut -d '.' -f2-\`
apt -y install wget unzip socat
curl https://get.acme.sh | sh
rm -rf /usr/local/bin/acme.sh
ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
acme.sh --register-account -m admin@$rootDomain
acme.sh --issue -d ${domain} --standalone -k ec-256
cp /root/.acme.sh/${domain}_ecc/fullchain.cer /etc/nginx/cert/server.cert
cp /root/.acme.sh/${domain}_ecc/${domain}.key /etc/nginx/cert/server.key
acme.sh --installcert -d ${domain} --ecc --key-file /etc/nginx/cert/server.key --fullchain-file /etc/nginx/cert/server.cert
systemctl start nginx
EOF
CentOS – EasyWay
cat >> install-CA.sh << EOF
#!/bin/bash
rm -rf /etc/nginx/cert/ && mkdir /etc/nginx/cert/
read -p "Enter your domain: " domain
rootDomain=\`echo $domain|cut -d '.' -f2-\`
yum -y install wget unzip socat
curl https://get.acme.sh | sh
rm -rf /usr/bin/acme.sh
ln -s /root/.acme.sh/acme.sh /usr/bin/acme.sh
acme.sh --register-account -m admin@$rootDomain
acme.sh --issue -d ${domain} --standalone -k ec-256
cp /root/.acme.sh/${domain}_ecc/fullchain.cer /etc/nginx/cert/server.cert
cp /root/.acme.sh/${domain}_ecc/${domain}.key /etc/nginx/cert/server.key
acme.sh --installcert -d ${domain} --ecc --key-file /etc/nginx/cert/server.key --fullchain-file /etc/nginx/cert/server.cert
systemctl start nginx
EOF
Nginx-Konfigurationseinstellungen – am Beispiel von Centos
Ändern Sie den Inhalt von nginx.conf
Kommentieren Sie den Inhalt unter „Einstellungen“ für einen TLS-fähigen Server aus
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name YourDomain;
root /usr/share/nginx/html;
ssl_certificate "/etc/nginx/cert/server.cert";
ssl_certificate_key "/etc/nginx/cert/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers DEFAULT;
# This is default SSL_ciphers setting,if you get error,you can change it like me,set DEFAULT
#ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
Fehlerbehebung
SSL_CTX_set_cipher_list:keine Verschlüsselungsübereinstimmung
Fehlermeldung
[emerg] 11926#11926: SSL_CTX_set_cipher_list("PROFILE=SYSTEM") failed (SSL: error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match)
Lösung
Setzen Sie das standardmäßige ssl_ciphers PROFILE=SYSTEM; in nginx.config auf ssl_ciphers DEFAULT;
Starten Sie nginx neu