ฉันถูกขอให้ตั้งค่า HTTPS พร้อมใบรับรองที่ลงนามด้วยตนเองใน Apache บน localhost แต่ฉันจะทำเช่นนั้นได้อย่างไร ฉันไม่มีความคิดเลย
ฉันถูกขอให้ตั้งค่า HTTPS พร้อมใบรับรองที่ลงนามด้วยตนเองใน Apache บน localhost แต่ฉันจะทำเช่นนั้นได้อย่างไร ฉันไม่มีความคิดเลย
คำตอบ:
ฉันเพิ่งพยายามนี้ - ฉันต้องการที่จะทดสอบรหัสการพัฒนาบางอย่างเกี่ยวกับฉันlocalhost Apache บน Windows นี่คือ WAAAY ยากกว่าที่ควรจะเป็น แต่นี่คือขั้นตอนที่สามารถทำงานได้หลังจากการถอนขน ...
ฉันพบว่าการติดตั้ง Apache มาพร้อมกับopenssl.exe
สิ่งที่เป็นประโยชน์ หากคุณไม่มีสำเนาคุณจะต้องดาวน์โหลด สำเนาของฉันอยู่ในApache2\bin
โฟลเดอร์ซึ่งเป็นวิธีอ้างอิงด้านล่าง
ขั้นตอน:
Apache2\conf
โฟลเดอร์..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
คุณสามารถเว้นว่างคำถามทั้งหมดไว้ยกเว้น:
เมื่อเสร็จแล้วให้พิมพ์
..\bin\openssl rsa -in blarg.pem -out blarg.key
สร้างใบรับรองที่ลงชื่อด้วยตนเองโดยพิมพ์:
..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
เปิดconf\httpd.conf
ไฟล์ของ Apache และตรวจสอบให้แน่ใจว่าเปิดใช้งานโมดูล SSL แล้วไม่ควรมีแฮชที่จุดเริ่มต้นของบรรทัดนี้:
LoadModule ssl_module modules/mod_ssl.so
การติดตั้ง Apache บางตัวจะกำหนดค่า SSL ในไฟล์แยกต่างหาก ถ้าเป็นเช่นนั้นตรวจสอบให้แน่ใจว่ามีการรวมไฟล์ SSL conf ในกรณีของฉันฉันต้องยกเลิกหมายเหตุบรรทัดนี้:
Include conf/extra/httpd-ssl.conf
ในการกำหนดค่า SSL httpd-ssl.conf
ฉันต้องอัปเดตบรรทัดต่อไปนี้:
SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
DocumentRoot
- ตั้งค่านี้เป็นโฟลเดอร์สำหรับไฟล์เว็บของคุณServerName
- ชื่อโฮสต์ของเซิร์ฟเวอร์SSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
รีสตาร์ท Apache
https://localhost/
ในเบราว์เซอร์ของคุณหวังว่าคุณจะทำได้ไกลขนาดนี้ โปรดอัปเดตโพสต์นี้ด้วยข้อมูลที่เป็นประโยชน์อื่น ๆ
(ภาพหน้าจอมารยาทของ Neil Obremski และบทความที่เป็นประโยชน์ของเขา- แม้ว่าตอนนี้ค่อนข้างล้าสมัย)
ฉันใช้ ngrok ( https://ngrok.com/ ) สำหรับสิ่งนี้ ngrok เป็นเครื่องมือบรรทัดคำสั่งและสร้างอุโมงค์สำหรับ localhost มันสร้างการเชื่อมต่อทั้ง http และ https หลังจากดาวน์โหลดแล้วต้องรันคำสั่งต่อไปนี้:
ngrok http 80
(ในรุ่น 2 ไวยากรณ์คือ: ngrok http 80 ในรุ่น 2 พอร์ตใด ๆ สามารถถูกอุโมงค์ได้)
หลังจากผ่านไปสองสามวินาทีมันจะให้สอง URL:
http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com
ทีนี้ทั้ง url ก็ชี้ไปที่ localhost
นี่เป็นวิธีที่ง่ายที่สุดในการทำสิ่งนี้
ก่อนอื่นให้คัดลอกไฟล์server.crt & server.keyเหล่านี้(ค้นหาในไฟล์แนบ) ลงในไดเรกทอรี apache / conf / ssl ของคุณ
จากนั้นเปิดไฟล์ httpd.conf และเพิ่มบรรทัดต่อไปนี้
Listen 80
Listen 443
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot "d:/wamp/www" #your wamp www root dir
ServerName localhost
SSLEngine on
SSLCertificateFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.crt"
SSLCertificateKeyFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.key"
</VirtualHost>
เพื่อปกป้องความปลอดภัยของข้อมูลที่ถูกส่งไปยังและจากเว็บเซิร์ฟเวอร์ของคุณเป็นความคิดที่ดีที่จะเปิดใช้งานการเข้ารหัสการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์ นี้มักจะถูกเรียกว่าSSL
ดังนั้นเรามาตั้ง HTTPS พร้อมใบรับรองที่ลงนามเองบน Apache2 ฉันจะทำรายการขั้นตอนที่คุณควรทำตาม:
sudo apt-get install apache2
สถานะ apache2 ของบริการ sudo
มันควรจะออก
ตรวจสอบว่าคุณได้รับหน้าเริ่มต้นสำหรับ apache2 เช่นนี้
openssl req -x509 -newkey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365-nodes
กรุณากรอกข้อมูลตามที่แสดงด้านล่าง
ควรสร้างmykey.keyและmycert.pemในไดเรกทอรีทำงานปัจจุบันของคุณ
sudo cp mycert.pem / etc / ssl / certs
sudo cp mykey.key / etc / ssl / private
sudo a2enmod ssl
มันควรจะออกเช่นนี้
sudo vi /etc/apache2/sites-available/default-ssl.conf
โปรดหาสองบรรทัดนี้และแทนที่ด้วยใบรับรองและเส้นทางหลักของคุณ
แรกเริ่ม
สุดท้าย
cd / etc / apache2 / sites-available /
sudo a2ensite default-ssl.conf
sudo service apache2 เริ่มต้นใหม่
ควรแสดงผลลัพธ์เช่นนี้พร้อมคำเตือนว่าหน้าเว็บที่คุณกำลังดูไม่ปลอดภัยเนื่องจากเราได้กำหนดค่าเซิร์ฟเวอร์ด้วยใบรับรองที่ลงชื่อด้วยตนเอง
default-ssl.conf
ที่นี่ ผมกำลังจะเปลี่ยนชื่อmycert
ไปssl-cert-snakeoil
แต่ไฟล์นี้อยู่แล้วดังนั้นผมจึงใช้เพียงแค่นั้น! ดังนั้นฉันสามารถข้ามสองขั้นตอนไปกับ Debian ได้อย่างปลอดภัย
Windows + Apache 2.4 ตัวอย่างเช่น:
uncomment ssl_module ในhttpd.conf
ไฟล์ของคุณ
LoadModule ssl_module modules/mod_ssl.so
ฟังพอร์ต 443 เช่นเดียวกับ 80 พอร์ตในhttpd.conf
ไฟล์ของคุณ
Listen 80
Listen 443
uncomment รวมถึงโฮสต์เสมือนในhttpd.conf
ไฟล์ของคุณ
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
เพิ่ม VirtualHost ในของคุณ conf/extra/httpd-vhosts.conf
<VirtualHost _default_:443>
DocumentRoot "D:/www" #your site directory path
ServerName localhost
#ServerAlias localhost.com localhost2.com
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
<Directory "D:/www">
Options -Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
เฉพาะหมายเลขพอร์ต443
และSSL......
บรรทัดต่างจาก http ปกติการตั้งค่า
บันทึกไฟล์ config และเริ่มบริการ apache ใหม่ จากนั้นคุณสามารถเยี่ยมชมhttps: // localhost /
เว็บเบราว์เซอร์จะเตือนคุณว่าไม่ปลอดภัยในครั้งแรกเพียงเลือกดำเนินการต่อ
จริงๆแล้วมันค่อนข้างง่ายสมมติว่าคุณมีการติดตั้ง openssl สะดวก (คุณอยู่บนแพลตฟอร์มใด)
สมมติว่าคุณอยู่ใน linux / solaris / mac os / x, Apache SSL / TLS mini-HOWTO ของ Vanมีแนวทางที่ยอดเยี่ยมที่ฉันจะไม่ทำซ้ำที่นี่
อย่างไรก็ตามบทสรุปสำหรับผู้บริหารคือคุณต้องสร้างใบรับรองที่ลงนามเอง เนื่องจากคุณใช้ apache สำหรับ localhost น่าจะเป็นการพัฒนา (ไม่ใช่เว็บเซิร์ฟเวอร์สาธารณะ) คุณจะรู้ว่าคุณสามารถเชื่อถือใบรับรองที่ลงนามด้วยตนเองและสามารถเพิกเฉยต่อคำเตือนที่เบราว์เซอร์ของคุณจะส่งถึงคุณ
นี่น่าจะเป็น Ubuntu, Mint ที่คล้ายกับ Apache2
มันเป็นแนวทางที่ดีดังนั้นควรทำตามนี้
และปล่อยให้ ssl.conf ของคุณเป็นแบบนี้หรือคล้ายกัน
<VirtualHost _default_:443>
ServerAdmin your@email.com
ServerName localhost
ServerAlias www.localhost.com
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
คุณสามารถรับมัน
หวังว่าความช่วยเหลือนี้สำหรับ linuxer
มันง่ายมาก
เพียงแค่เรียกใช้คำสั่งต่อไปนี้
sudo a2enmod ssl
sudo service apache2 restart
sudo a2ensite default-ssl.conf
เพียงเท่านี้คุณก็ทำเสร็จแล้ว
หากคุณต้องการบังคับ SSL (ให้ใช้ https เสมอ) ให้แก้ไขไฟล์:
sudo nano /etc/apache2/sites-available/000-default.conf
และเพิ่มหนึ่งบรรทัดนี้
<VirtualHost *:80>
. . .
Redirect "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>
จากนั้นรีสตาร์ทอีกครั้ง
sudo service apache2 restart
systemctl reload apache2
sudo a2ensite default-ssl.conf
ฉันโพสต์คำตอบนี้เนื่องจากฉันต่อสู้ด้วยตัวเองและ Chrome ได้อัปเดตความปลอดภัยโดยกำหนดชื่อสำรองของหัวเรื่องที่ไม่มีบทความจำนวนมากเนื่องจากไม่จำเป็นเมื่อมีการโพสต์เป็นคำตอบ ฉันสมมติว่าติดตั้ง WAMP แล้ว
ขั้นตอนที่ 1
ดาวน์โหลดOpenSSL Light แล้วติดตั้ง
แม้ว่าส่วนนี้จะเป็นทางเลือก แต่มันจะทำให้ง่ายต่อการรันคำสั่งในภายหลัง หากคุณข้ามขั้นตอนนี้คุณจะต้องระบุเส้นทางแบบเต็มไปที่ openssl.exe ซึ่งคุณจะใช้คำสั่ง หากคุณต้องการตั้งค่าให้อัพเดตพา ธ openssl.exe ใน Environment Variables
ตัวแปรสภาพแวดล้อม -> ตัวแปรระบบ -> เส้นทาง -> แก้ไข -> ใหม่ -> c: \ Program Files \ OpenSSL-Win64 \ bin
สร้างโฟลเดอร์ชื่อ“ กุญแจ”ในc:/wamp64/bin/apache/apache2.4.27(your version number)/conf/
ไดเรกทอรี
สร้างไฟล์กำหนดค่าสำหรับ CA MyCompanyCA.cnfของคุณด้วยเนื้อหา (คุณสามารถเปลี่ยนได้ตามความต้องการของคุณ):
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = root_ca
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, fully qualified host name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[ root_ca ]
basicConstraints = critical, CA:true
สร้างไฟล์กำหนดค่าส่วนขยายMyCompanyLocalhost.extสำหรับใบรับรองเว็บเซิร์ฟเวอร์ของคุณ:
subjectAltName = @alt_names
extendedKeyUsage = serverAuth
[alt_names]
DNS.1 = localhost
DNS.2 = mycy.mycompany.com
ดำเนินการคำสั่งเหล่านี้ตามลำดับที่กำหนดเพื่อสร้างคีย์และใบรับรอง:
openssl req -x509 -newkey rsa:2048 -out MyCompanyCA.cer -outform PEM -keyout MyCompanyCA.pvk -days 10000 -verbose -config MyCompanyCA.cnf -nodes -sha256 -subj "/CN=MyCompany CA"
openssl req -newkey rsa:2048 -keyout MyCompanyLocalhost.pvk -out MyCompanyLocalhost.req -subj /CN=localhost -sha256 -nodes
openssl x509 -req -CA MyCompanyCA.cer -CAkey MyCompanyCA.pvk -in MyCompanyLocalhost.req -out MyCompanyLocalhost.cer -days 10000 -extfile MyCompanyLocalhost.ext -sha256 -set_serial 0x1111
เป็นผลให้คุณจะมีMyCompanyCA.cer , MyCompanyLocalhost.cerและMyCompanyLocalhost.pvkไฟล์
ติดตั้งMyCompanyCA.cerภายใต้
แผงควบคุม -> จัดการใบรับรองผู้ใช้ -> ผู้ออกใบรับรองหลักที่เชื่อถือได้ -> ใบรับรอง
หากต้องการติดตั้งMyCompanyLocalhost.cerเพียงดับเบิลคลิก
เปิดc:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.conf
และยกเลิกความคิดเห็น (ลบ #) 3 บรรทัดต่อไปนี้:
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
เปิดc:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf
และเปลี่ยนพารามิเตอร์ทั้งหมดเป็นพารามิเตอร์ที่แสดงด้านล่าง:
Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "c:/wamp64/bin/apache/apache2.4.27/logs/error.log"
TransferLog "c:/wamp64/bin/apache/apache2.4.27/logs/access.log"
SSLCertificateFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.cer"
SSLCertificateKeyFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.pvk"
SSLSessionCache "shmcb:c:/wamp64/bin/apache/apache2.4.27/logs/ssl_scache(512000)"
CustomLog "c:/wamp64/bin/apache/apache2.4.27/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
หมายเหตุ: นี่เป็นส่วนที่ยุ่งยาก หากคุณทำผิดพลาดเล็กน้อยในขณะที่แก้ไขไฟล์นี้ SSL จะไม่ทำงาน ทำสำเนาก่อนที่จะแก้ไข
รีสตาร์ท Wamp และ Chrome Localhost ปลอดภัยแล้ว: https: // localhost
HowTo for CentOS นี้ง่ายต่อการติดตามและใช้เวลาเพียง 5 นาที: https://wiki.centos.org/HowTos/Https
ฉันจะไม่ให้รายละเอียดแต่ละขั้นตอนที่นี่ แต่ขั้นตอนหลักคือ:
1. ) ติดตั้งโมดูล openssl สำหรับ apache หากยังไม่ได้ติดตั้ง
2. ) สร้างใบรับรองที่ลงชื่อด้วยตนเอง
- ณ จุดนี้คุณควรจะสามารถเยี่ยมชมhttps: // localhost ได้สำเร็จ
3. ) ตั้งค่าโฮสต์เสมือนถ้าจำเป็น
สิ่งนี้ใช้ได้กับ Windows 10 ที่มี Apache24:
1 - เพิ่มสิ่งนี้ที่ด้านล่างของ C:/Apache24/conf/httpd.conf
Listen 443
<VirtualHost *:443>
DocumentRoot "C:/Apache24/htdocs"
ServerName localhost
SSLEngine on
SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
</VirtualHost>
2 - เพิ่มserver.crt
และserver.key
ไฟล์ในC:/Apache24/conf/ssl
โฟลเดอร์ ดูคำตอบอื่น ๆ ในหน้านี้เพื่อค้นหา 2 ไฟล์เหล่านั้น
แค่นั้นแหละ!
httpd.conf
ไฟล์ฉันจะใส่ไฟล์อะไรลงไป? นี่คือสิ่งที่เกิดขึ้นเมื่อฉันใส่ข้อความนี้ไว้apache2.conf
:Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
และสภาพแวดล้อมในพื้นที่ของคุณสามารถเข้าถึงได้จากhttps://youruniquesubdomain.serveo.net
ฉันไม่อยากจะเชื่อเมื่อพบบริการนี้ มันมีทุกอย่างและใช้ง่ายที่สุด หากมีเครื่องมือที่ง่ายและไม่เจ็บปวดสำหรับทุกปัญหา ...
ใช้งาน Apache บน Windows 10 ได้ที่นี่ ฉันไม่สามารถทำให้ Chrome เชื่อถือใบรับรองที่ทำในคำตอบสูงสุดโดย Simon สิ่งที่ฉันทำคือใช้ PowerShell เพื่อสร้างใบรับรองที่ลงชื่อด้วยตนเอง
ใน PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1
พิมพ์Certificate
ลงในแถบค้นหา Windows คลิกManage Computer Certificates
รายการแผงควบคุมที่แนะนำ
จากโปรแกรมการจัดการใบรับรองที่เกิดขึ้น (certlm) ตอนนี้คุณควรจะเห็นภายใต้คีย์localhost
Personal >> Certificates
Trusted Root Certification Authorities
ผมคัดลอกใบรับรองนี้เข้าไป ฉันจะซื่อสัตย์ในสิ่งที่ฉันไม่แน่ใจว่าจำเป็น
เลือกใบรับรองที่คัดลอกใหม่ดับเบิลคลิกที่มัน (ใบรับรอง localhost) จาก Modal ใบรับรองคลิกที่Details
แท็บแล้วCopy to File...
ปุ่ม
สิ่งนี้จะปรากฏขึ้นและตัวช่วยสร้างการส่งออกฉันเลือกที่จะส่งออกคีย์ส่วนตัวคลิกถัดไป ฉันก็เลือกที่จะExport all extended properties
(อีกครั้งฉันไม่แน่ใจว่าจำเป็นหรือไม่) ฉันเลือกที่จะใช้รหัสผ่านแบบง่าย ( pass
) และการเข้ารหัสเริ่มต้น เลือกโฟลเดอร์ที่จะส่งออกและตั้งชื่อไฟล์ คุณสามารถย้ายและเปลี่ยนชื่อไฟล์หากจำเป็น เพื่อความเรียบง่ายลองคัดลอกไปยังโฟลเดอร์ conf ของคุณภายใต้การติดตั้ง Apache ของคุณ (ในกรณีของฉัน:) C:\apache\conf
และตั้งชื่อไฟล์myCert
(ไฟล์ผลลัพธ์จะเป็น.pfx
ไฟล์)
.pfx
ไฟล์เพื่อใช้กับ Apacheจากที่นี่โดยทั่วไปฉันติดตามการกวดวิชาที่นี่แต่ฉันจะเพิ่มคำแนะนำที่นี่ (tweaked สำหรับการตั้งค่าของเรา) ในกรณีที่เว็บไซต์จะลง
เปิดพรอมต์คำสั่งของคุณใน/apache/conf/
โฟลเดอร์
เรียกใช้คำสั่งต่อไปนี้: หมายเหตุ:นี่ถือว่าคุณมีopenssl.exe
ในbin
โฟลเดอร์ในโฟลเดอร์ราก apache (ซึ่งควรเป็นมาตรฐาน / ค่าเริ่มต้น)
..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem
สิ่งนี้จะแจ้งให้คุณใส่รหัสผ่านป้อนสิ่งที่คุณป้อนสำหรับขั้นตอนที่ 2 เมื่อคุณส่งออก.pfx
ไฟล์ pass
ในกรณีของฉันนี้เป็น ฉันป้อนรหัสผ่านเดียวกันสำหรับวลี PEM และยืนยันอีกครั้ง สิ่งนี้จะสร้างไฟล์ใหม่ที่เรียกว่าprivateKey.pem
ในโฟลเดอร์ conf ของคุณ
จากนั้นเรียกใช้
..\bin\openssl rsa -in privateKey.pem -out private.pem
อีกครั้งคุณจะได้รับแจ้งรหัสผ่าน ( Enter pass phrase for privateKey.pem:
) privateKey.pem
ให้ใช้รหัสผ่านที่คุณตั้งไว้สำหรับ (ในกรณีของฉันpass
)
คุณควรเห็นข้อความที่ระบุว่าwriting RSA key
และไฟล์ใหม่ที่เรียกว่าprivate.pem
ในconf/
โฟลเดอร์ของคุณ นี่จะเป็น SSLCertificateKeyFile ของคุณ
ตอนนี้เพื่อสร้างใบรับรองเซิร์ฟเวอร์ที่สอดคล้องกัน วิ่ง:
..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem
สิ่งนี้จะแจ้งให้คุณใส่รหัสผ่านป้อนสิ่งที่คุณป้อนสำหรับขั้นตอนที่ 2 เมื่อคุณส่งออก.pfx
ไฟล์ ใส่มันและคุณจะมีไฟล์ชื่อEntrustCert.pem
ในconf
โฟลเดอร์ ของคุณ นี่คือไฟล์ SSLCertificate ของคุณ
httpd.conf
ใช้ไฟล์ใหม่ที่สร้างขึ้นเป็นคีย์และใบรับรองเซิร์ฟเวอร์ของคุณ อย่าลืมเปลี่ยนรูทของเอกสารเป็นไฟล์ของคุณ!
ServerName localhost:80
Protocols h2 h2c http/1.1
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<VirtualHost _default_:443>
ServerName localhost:443
DocumentRoot ${SRVROOT}/htdocs/MYSITE
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
</VirtualHost>
นอกจากนี้ในhttpd.conf
:
LoadModule ssl_module modules/mod_ssl.so
ไม่ใส่เครื่องหมายถูก (ไม่มี#
ด้านหน้า)LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule http2_module modules/mod_http2.so
Include conf/extra/httpd-ssl.conf
(หมายเหตุ: ตรวจสอบให้แน่ใจว่าไฟล์อยู่ตรงไหน!)ฉันยังมีห้องสมุด curl และ open ssl รวมอยู่ด้วย:
# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"
โมดูลเหล่านี้ไม่จำเป็น แต่ฉันจะทราบว่าฉันได้เปิดใช้งานแล้ว:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
httpd-ssl.conf
ในextra/
โฟลเดอร์ในโฟลเดอร์ที่คุณจะเห็นไฟล์ที่เรียกว่าconf/
httpd-ssl.conf
5a เปลี่ยนDocumentRoot
- เปลี่ยนDocumentRoot
ค่าเริ่มต้นเป็นไดเรกทอรีที่ไฟล์ของคุณอยู่
5b เปลี่ยนServerName
- เปลี่ยนServerName
จากค่าเริ่มต้น (คล้ายwww.example.com:443
) เป็นlocalhost:443
5c เปลี่ยนการSSLCertificateFile
เปลี่ยนSSLCertificateFile
จากค่าเริ่มต้น ( ${SRVROOT}/conf/server.crt
) เป็น${SRVROOT}/conf/EntrustCert.pem
5c เปลี่ยนการSSLCertificateKeyFile
เปลี่ยนSSLCertificateKeyFile
จากค่าเริ่มต้น ( ${SRVROOT}/conf/server.key
) เป็น${SRVROOT}/conf/private.pem
ทั้งหมดเข้าด้วยกันใน<VirtualHost _default_:443>
แท็ก
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
# require an ECC certificate which can also be configured in
# parallel.
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-dsa.key"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-ecc.key"
หลังจากทำการเปลี่ยนแปลงเหล่านี้คุณควรจะสามารถรีสตาร์ท Apache และไปที่https: // localhostโดยไม่มีคำเตือนความปลอดภัยและกุญแจเล็ก ๆ น้อย ๆ !
ฉันหวังว่านี่จะช่วยให้ใครบางคน! 😊
แหล่งที่มา:
1. ) คำตอบของ Auri Rahimzadeh เกี่ยวกับการสร้างใบรับรองที่ลงนามด้วยตนเอง
2. ) ดาต้าการ์ดของ Entrust - ฉันจะแปลง. pfx ให้ใช้กับเซิร์ฟเวอร์ Apache ได้อย่างไร
อีกวิธีง่าย ๆ คือใช้เซิร์ฟเวอร์ Python ใน Ubuntu
สร้าง server.xml ด้วยคำสั่งต่อไปนี้ใน terminal:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
หมายเหตุ: สมมติว่าคุณติดตั้งopenssl
บันทึกรหัสด้านล่างในไฟล์ชื่อsimple-https-server.py
ในไดเรกทอรีใด ๆ ที่คุณต้องการเรียกใช้เซิร์ฟเวอร์
import BaseHTTPServer, SimpleHTTPServer
import ssl
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True)
httpd.serve_forever()
เรียกใช้เซิร์ฟเวอร์จากเทอร์มินัล:
python simple-https-server.py
เยี่ยมชมหน้าได้ที่:
https://localhost:4443
หมายเหตุเพิ่มเติม ::
คุณสามารถเปลี่ยนพอร์ตในsimple-https-server.py
ไฟล์ในบรรทัด
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
คุณสามารถเปลี่ยนlocalhost
เป็น IP ของคุณในบรรทัดเดียวกันด้านบน:
httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
และเข้าถึงหน้าบนอุปกรณ์ใด ๆ ที่เครือข่ายของคุณเชื่อมต่อ สิ่งนี้มีประโยชน์มากในกรณีเช่น "คุณต้องทดสอบ HTML5 GeoLocation API ในมือถือและ Chrome จะ จำกัด API ในการเชื่อมต่อที่ปลอดภัยเท่านั้น"
สรุปสาระสำคัญ: https://gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
สำหรับผู้ที่ใช้ macOS นี่เป็นแนวทางที่ดีhttps://getgrav.org/blog/macos-sierra-apache-multiple-php-versionsเพื่อตั้งค่าสภาพแวดล้อมการพัฒนาเว็บในพื้นที่ของคุณ ในส่วนที่ 3 https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller อธิบายวิธีตั้งค่า apache ด้วยใบรับรองที่ลงนามด้วยตนเอง:
นี่คือคำสั่งที่สำคัญ:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
แต่มีไม่กี่ขั้นตอนที่คุณต้องทำตามดังนั้นตรวจสอบว่าและโชคดี! ;)
ฉันต้องการเพิ่มบางสิ่งลงในคำตอบที่ดีมากของ @CodeWarrior ที่ทำงานได้อย่างสมบูรณ์บน Chrome แต่สำหรับ Firefox ต้องมีขั้นตอนเพิ่มเติม
เนื่องจาก Firefox ไม่ได้ผลักใบรับรอง CA ที่ Windows ทำตามค่าเริ่มต้นคุณต้องดำเนินการต่อabout:config
เลื่อนลงมาsecurity.enterprise_roots.enabled
และเปลี่ยนเป็นจริง
ตอนนี้ใบรับรองของคุณควรถูกมองว่าถูกต้องเช่นกันบน Firefox
แน่นอนว่านี่เป็นเพียงเพื่อวัตถุประสงค์ในการพัฒนาเท่านั้นเนื่องจาก ssl trust เป็นข้อกังวลด้านความปลอดภัยที่สำคัญและเปลี่ยนการตั้งค่านี้เฉพาะเมื่อคุณทราบถึงผลกระทบ
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
ตบในโดเมนย่อยและหมายเลขพอร์ตของคุณและคุณพร้อมที่จะไปhttps://youruniquesubdomain.serveo.net