Der Nginx-Server installiert das Zertifikat und aktiviert SSL (acme.sh).

Prämisse

  1. Sie haben einen VPS-Server gekauft, z. B. Alibaba Cloud Global Station ECS, AWS EC2, Azure VM, GCP Compute usw.
  2. Die Sicherheitsgruppe hat die Ports 80 und 443 geöffnet und die Zugriffsquelle ist auf 0.0.0.0/0 eingestellt
  3. 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 {
    
    
        }   
    }   

Fügen Sie hier eine Bildbeschreibung ein

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

Guess you like

Origin blog.csdn.net/fly1574/article/details/134175679