Score:0

การตั้งค่า SSL สำหรับพอร์ตที่กำหนดเองใน nginx - letsencrypt

ธง in

ฉันกำลังพยายามเปิดใช้งาน SSL บนพอร์ตที่กำหนดเอง (ไม่ใช่ 443)เรียกใช้หน้าเว็บ จากการค้นหารอบๆ ไม่พบข้อมูลที่เป็นประโยชน์มากนัก

เซิร์ฟเวอร์มีพอร์ตที่ไม่สามารถเปลี่ยนแปลงได้ ภายนอก: 26143 ภายใน: 80

ในการเข้าสู่เซิร์ฟเวอร์ (โดยไม่ใช้ SSL) คุณต้องพิมพ์ example.com:26143 และระบบจะมองว่าเป็นการเชื่อมต่อกับพอร์ต 80

ฉันจะตั้งค่าใบรับรอง (ให้เข้ารหัส) เพื่อเปิดใช้งาน SSL บนพอร์ตนี้ได้อย่างไร


จากการทดสอบ ดูเหมือนว่าไม่ว่าจะทำอะไร มันจะเข้าถึงเซิร์ฟเวอร์ที่พอร์ต 80 เท่านั้น แม้ว่าฉันจะตั้งค่าเป็น 26143 ก็ตาม

นี่คือการกำหนดค่าที่เปิดใช้งานไซต์ nginx:

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;

    รูท /root/html;

    ดัชนี index.php;
    ชื่อเซิร์ฟเวอร์ _;

    ที่ตั้ง / {
        try_files $uri $uri/ =404;
    }

    ตำแหน่ง ~ \.php$ {
        รวมตัวอย่าง/fastcgi-php.conf;
    
        # ด้วย php-fpm (หรือซ็อกเก็ตยูนิกซ์อื่น ๆ ):
        fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
    }

    ตำแหน่ง ~ /\.ht {
        ปฏิเสธทั้งหมด
    }

    ที่ตั้ง /.well-known {
        รูท /var/www/ssl/example.com/;
    }
}

คำสั่งที่ฉันได้ลองคือ:

certbot --nginx -d example.com:26143
certbot certonly --standalone --preferred-challenges http -d example.com:26143
certbot certonly --standalone --preferred-challenges http -d example.com
certbot certonly --standalone --preferred-challenges http --http-01-port 26143 -d example.com
certbot certonly --nginx --preferred-challenges http --http-01-port 26143 -d example.com
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com:26143 -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com --http-01-port 26143 -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com --preferred-challenges http --http-01-port 26143 -m [email protected] --webroot -w /root/ html

การปรับแต่งย้อนกลับและสี่ข้อผิดพลาดที่พบบ่อยที่สุดที่ฉันได้รับคือ:

หมายเหตุสำคัญ:
 - เซิร์ฟเวอร์รายงานข้อผิดพลาดต่อไปนี้:

   โดเมน: example.com
   ประเภท: ไม่ได้รับอนุญาต
   รายละเอียด: การตอบกลับไม่ถูกต้องจาก
   https://example.com/.well-known/acme-challenge/ho73up1dR3KU4V37awccOw2T5xsSILWUM365ZnwVEN4
   [159.81.xxx.xxx]: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
   2.0//EN\">\n<html><head>\n<title>404 ไม่
   พบ</title>\n</head><body>\n<h1>ไม่พบ</h1>\n<p"

   หากต้องการแก้ไขข้อผิดพลาดเหล่านี้ โปรดตรวจสอบว่าชื่อโดเมนของคุณคือ
   ป้อนอย่างถูกต้องและบันทึก DNS A/AAAA สำหรับโดเมนนั้น
   มีที่อยู่ IP ที่ถูกต้อง

404 คือ ไม่ จากระบบของฉัน มันมาจาก example.com:80 แทนที่จะเป็น example.com:26143 นอกจากนี้ ฉันไม่สามารถแก้ไขระเบียน DNS ได้


จากประสบการณ์ของฉัน การปล่อยให้เข้ารหัสและ SSL ทำให้เกิดความสับสน ประกอบกับการจำกัดอัตรา ฉันไม่สามารถแก้ปัญหาได้มากพอที่จะเข้าใจ

ฉันรู้ว่ามันควรจะเป็นไปได้ ฉันแค่ไม่รู้ว่าฉันทำอะไรผิดและ/หรืออย่างไร

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

digijay avatar
mx flag
ดูเหมือนว่าจะมีการเปลี่ยนเส้นทางเกิดขึ้น เนื่องจากแทนที่จะเป็น acme-challenge LE จะได้รับเอกสาร html พร้อมข้อความ 404 นอกจากนี้ IIRC LE รองรับเฉพาะพอร์ต 80 และ 443 (https://serverfault.com/a/805681)
in flag
พอร์ต 443 ไม่เกี่ยวข้อง มีเพียงพอร์ต 80 เท่านั้น เนื่องจากมีจุดที่ต้องมีความท้าทาย
Score:1
ธง in

Let's encrypt http-01 challenge ต้องใช้พอร์ต 80 เพื่อแลกเปลี่ยนข้อมูลการตรวจสอบ ไม่เคยใช้เซิร์ฟเวอร์ https พอร์ต 80 เป็นข้อกำหนดที่ยาก หากนั่นไม่ใช่ตัวเลือก DNS ก็เป็นเพียงวิธีอื่น

มีเซิร์ฟเวอร์ทดสอบที่คุณควรใช้จนกว่าคุณจะตั้งค่าได้ถูกต้อง (จำกัดอัตราน้อยกว่าหรืออาจไม่มีขีดจำกัด) อันดับแรก หลังจากนั้นคุณเปลี่ยนไปใช้เซิร์ฟเวอร์ที่ใช้งานจริง

คำถามที่คล้ายกัน: https://community.letsencrypt.org/t/port-4434-แทน-of-443/61349

Typewar avatar
in flag
ขอบคุณสำหรับคำอธิบาย! ในกรณีนี้ สำหรับสถานการณ์นี้ ฉันเดาว่าฉันสามารถใช้พร็อกซีนอกไซต์ที่เชื่อมต่อกับเซิร์ฟเวอร์เพื่อใช้พอร์ต 80 ได้ แต่นั่นอาจใช้ได้กับชื่อโฮสต์ / โดเมนของพร็อกซีเท่านั้น ไม่ใช่ต้นทาง
Typewar avatar
in flag
เมื่อพิจารณาเพิ่มเติมในประเด็นนี้ ดูเหมือนว่าสิ่งที่ฉันขอจะเป็นไปไม่ได้ในตอนนี้ https://github.com/certbot/certbot/issues/2697
in flag
อย่างที่ฉันเขียนไว้ในคำตอบ คุณต้องเปิดพอร์ต 80 และเพิ่มการตอบกลับที่ท้าทายบนเซิร์ฟเวอร์ http นั้น พอร์ตใดที่คุณใช้หลังจากนั้นไม่เกี่ยวข้อง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา