Làm cách nào để tôi cho phép HTTPS cho Apache trên localhost?


193

Tôi đã được yêu cầu thiết lập HTTPS với chứng chỉ tự ký trên Apache trên localhost, nhưng làm thế nào để tôi thực sự làm điều đó? Tôi không có ý kiến ​​gì cả.


1
Sử dụng Serveo ! ssh -R youruniquesubdomain:80:localhost:3000 serveo.netTát vào tên miền phụ và số cổng của bạn và bạn đã sẵn sàng tiếp tụchttps://youruniquesubdomain.serveo.net
totymedli

Câu trả lời:


135

Tôi vừa thử điều này - Tôi cần kiểm tra một số mã phát triển trên localhost Apache của tôi trên Windows . Đây là WAAAY khó khăn hơn nó nên được. Nhưng đây là các bước quản lý để hoạt động sau khi nhổ lông nhiều ...

Tôi thấy rằng bản cài đặt Apache của tôi đi kèm với openssl.exenó rất hữu ích. Nếu bạn không có bản sao, bạn sẽ cần tải xuống. Bản sao của tôi là trong Apache2\binthư mục đó là cách tôi tham khảo nó bên dưới.

Các bước:

  1. Đảm bảo bạn có quyền ghi vào thư mục conf của Apache
  2. Mở một dấu nhắc lệnh trong Apache2\confthư mục
  3. Kiểu
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. Bạn có thể để trống tất cả các câu hỏi ngoại trừ:

    • Cụm mật khẩu PEM: mật khẩu tạm thời như "mật khẩu"
    • Tên thường gọi: tên máy chủ của máy chủ của bạn

  5. Khi hoàn thành, gõ
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. Tạo chứng chỉ tự ký của bạn bằng cách gõ:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. Mở conf\httpd.conftệp của Apache và đảm bảo mô-đun SSL được bật - sẽ không có băm khi bắt đầu dòng này:
    LoadModule ssl_module modules/mod_ssl.so

  8. Một số cài đặt Apache đặt cấu hình SSL trong một tệp riêng. Nếu vậy, hãy đảm bảo rằng tệp conf conf SSL đang được đưa vào. Trong trường hợp của tôi, tôi đã phải bỏ dòng này:
    Include conf/extra/httpd-ssl.conf

  9. Trong cấu hình SSL, httpd-ssl.conftôi phải cập nhật các dòng sau:

    • Cập nhật
      SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
      lên
      SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
      (Dấu ngoặc trong đường dẫn gây nhầm lẫn mô-đun, vì vậy chúng ta cần thoát chúng)
    • DocumentRoot - đặt thư mục này vào thư mục cho các tệp web của bạn
    • ServerName - tên máy chủ của máy chủ
    • SSLCertificateFile "conf/blarg.cert"
    • SSLCertificateKeyFile "conf/blarg.key"

  10. Khởi động lại Apache.

  11. Hãy thử tải https://localhost/trong trình duyệt của bạn.

Hy vọng bạn đã làm cho nó đến nay. Hãy cập nhật bài viết này với bất kỳ thông tin hữu ích khác.

(Ảnh chụp màn hình lịch sự của Neil Obremski và bài viết hữu ích của anh ấy - mặc dù hiện đã khá lỗi thời.)


2
Cảm ơn. Tôi cũng đã phải chỉnh sửa các chỉ thị ErrorLog, TransferLog và CustomLog thành các đường dẫn hợp lệ nếu không Apache sẽ không bắt đầu.
Tamlyn

1
Vì một số lý do, các hướng dẫn không hoạt động nữa hoặc không đầy đủ
Jacobian

6
Tôi đã phải bỏ qua phần sau cũng như trong httpd.conf của mình để nó hoạt động: LoadModule socache_shmcb_module mô-đun / mod_socache_shmcb.so
erik

1
Tôi đã làm hai bước nữa để làm cho nó hoạt động, thêm mô-đun LoadModule socache_shmcb_module modules / mod_socache_shmcb.so và trong httpd-ssl.conf tôi đúng con đường ssl log tại dòng 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim Một .

5
Để tạo các tệp .pem và .key, tôi đã phải đặt 2 biến môi trường ở bước 2: đặt OPENSSL_CONF = C: \ path \ thành \ apache \ Apache2.4.4 \ conf \ openssl.cnf đặt RANDFILE = C: \ đường dẫn \ đến \ apache \ Apache2.4.4 \ conf \ .rnd
eosphere

57

Tôi sử dụng ngrok ( https://ngrok.com/ ) cho việc này. ngrok là một công cụ dòng lệnh và tạo một đường hầm cho localhost. Nó tạo ra cả kết nối http và https. Sau khi tải xuống, lệnh sau cần được chạy:

ngrok http 80

(Trong phiên bản 2, cú pháp là: ngrok http 80. Trong phiên bản 2, bất kỳ cổng nào cũng có thể được tạo đường hầm.)

Sau vài giây, nó sẽ cho hai url:

http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com

Bây giờ, cả các url đều trỏ đến localhost.


1
@sudip, Mã nguồn mở của ngrok có hoạt động theo cách mà chúng tôi có thể lưu trữ mã này trên máy chủ của chúng tôi mà không cần sửa đổi không? Nếu không, nó khá là một showstopper vì không ổn khi chuyển hướng yêu cầu của người dùng đến một máy chủ bên ngoài như ngrok.
Pacerier

2
@Pacerier Tôi không có ý định sử dụng nó trên máy chủ. Tôi sử dụng nó trên localhost (Bcz nhà cung cấp mạng của tôi cung cấp cho tôi một IP động). Tôi đã sử dụng nó lần đầu tiên để thử nghiệm IPN paypal và nó hoạt động hoàn hảo. Tôi tự hỏi tại sao ai đó sẽ sử dụng nó trên máy chủ và cho mục đích gì.
sudip

@sudip, Mục đích rất rõ ràng, Để cho phép mã hoạt động trên HTTP cũng hoạt động với HTTPS mà không cần thêm mã hóa.
Pacerier 19/03/2015

1
Mặc dù điều này rất hữu ích, nhưng có vẻ không an toàn khi cho phép truy cập vào máy dev của bạn vào internet mở. Sử dụng một cái gì đó như thế này sẽ khiến bạn bị sa thải vào một chủ nhân có ý thức bảo mật.
Andy M

@Ngon ngon ngon . Nó hoàn toàn miễn phí trước đây trong V 1. Nhưng, các cổng http và https vẫn miễn phí trong v 2 (không biết có bất kỳ hạn chế cổng nào có gói miễn phí không). Kiểm tra gói miễn phí tại đây: ngrok.com/product#pricing
sudip

24

đây là cách đơn giản nhất để làm điều này

đầu tiên sao chép các tệp server.crt & server.key (tìm trong tệp đính kèm) vào thư mục apache / conf / ssl của bạn

sau đó mở tệp httpd.conf và thêm dòng sau

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>

3
Tôi cũng phải kích hoạt mô-đun LoadModule ssl_module libexec / apache2 / mod_ssl.so trong (/etc/apache2/httpd.conf)
Alexey

17
Tôi tự hỏi làm thế nào an toàn / nguy hiểm khi tải xuống các tệp * .crt * .key từ nguồn không đáng tin cậy thay vì tạo tệp của riêng bạn.
Petr Peller

4
@PetrPeller chúng tôi đang thiết lập https để phát triển địa phương, vậy tại sao tự hỏi về sự an toàn / nguy hiểm
Anil Gupta

7
Một lời giải thích làm thế nào để tạo ra các tập tin sẽ là tuyệt vời. Bởi vì tải xuống các tệp từ một nguồn không xác định là một thực tiễn xấu, nhưng cũng bởi vì loại liên kết đó sẽ bị hỏng tại một số điểm.
Stephan Vierkant

2
Hướng dẫn này là tốt digitalocean.com/community/tutorials/ trên
Dhiraj

11

Để bảo vệ tính bảo mật của thông tin được gửi đến và từ máy chủ web của bạn, bạn nên cho phép mã hóa thông tin liên lạc giữa máy khách và máy chủ. Điều này thường được gọi là SSL .

Vì vậy, hãy thiết lập HTTPS với chứng chỉ tự ký trên Apache2. Tôi sẽ liệt kê các bước mà bạn nên làm theo:

  • Cài đặt máy chủ web apache2 trên máy của bạn. Đối với máy linux, hãy mở terminal và gõ

sudo apt-get cài đặt apache2

  • Sau khi cài đặt thành công, hãy kiểm tra trạng thái dịch vụ apache2 bằng cách thực hiện lệnh

dịch vụ sudo apache2

Nó sẽ xuất

tình trạng dịch vụ apache2

  • Điều hướng đến trình duyệt và gõ

http: // localhost: 80

Xác minh rằng bạn nhận được trang mặc định cho apache2 như thế này.

đầu ra mặc định của apache2

  • Để mã hóa kết nối web, chúng tôi cần chứng chỉ từ CA (cơ quan cấp chứng chỉ) hoặc chúng tôi có thể sử dụng chứng chỉ tự ký. Hãy tạo một chứng chỉ tự ký bằng lệnh sau.

openssl req -x509 -newkey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365 -nodes

Vui lòng điền thông tin phù hợp như hình dưới đây.

tạo chứng chỉ tự ký bằng openssl

mykey.keymycert.pem nên được tạo trong thư mục làm việc hiện tại của bạn.

  • Sẽ thật tuyệt nếu chúng ta di chuyển chứng chỉ và khóa tại một địa điểm chung và máy chủ web apache2 sẽ dễ dàng tìm thấy chúng. Vì vậy, hãy thực hiện các lệnh sau

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / private

  • Hãy kích hoạt chế độ SSL trên máy chủ của bạn

sudo a2enmod ssl

Nó sẽ xuất ra như thế này

kích hoạt ssl

  • Hãy cấu hình apache2 để sử dụng chứng chỉ tự ký và khóa mà chúng tôi đã tạo ở trên.

sudo vi /etc/apache2/sites-av Available / default-ssl.conf

Vui lòng tìm hai dòng này và thay thế chúng bằng các đường dẫn chứng chỉ và khóa của bạn.

Ban đầu

mặc định-conf

Sau cùng

sau khi thay đổi cấu hình

  • Kích hoạt trang web

cd / etc / apache2 / site-Available /

sudo a2ensite mặc định-ssl.conf

  • Khởi động lại dịch vụ apache2

sudo dịch vụ apache2 khởi động lại

  • Xác minh máy chủ web apache2 trên HTTPS. Mở lại trình duyệt của bạn và gõ

https: // localhost: 443

Nó sẽ xuất ra một cái gì đó như thế này với một cảnh báo rằng trang bạn sắp xem không an toàn vì chúng tôi đã cấu hình máy chủ với chứng chỉ tự ký.

nhập mô tả hình ảnh ở đây

  • Xin chúc mừng bạn đã cấu hình apache2 của mình với điểm cuối HTTPS, bây giờ hãy nhấp vào nâng cao -> thêm ngoại lệ -> xác nhận ngoại lệ bảo mật , bạn sẽ thấy trang mặc định trở lại.

trang sau khi thêm ngoại lệ


Tôi không muốn chỉnh sửa bất kỳ tập tin cấu hình nào nếu có thể, vì vậy tôi đã để nguyên default-ssl.confnhư vậy. Tôi đã định đổi tên mycertthành ssl-cert-snakeoilnhưng tập tin này đã tồn tại nên tôi chỉ sử dụng nó! Vì vậy, tôi đã có thể bỏ qua hai bước trên Debian một cách an toàn.
Rolf

@Rolf Tôi đồng ý với bạn nhưng trong sản xuất, trường hợp luôn sử dụng chứng chỉ và khóa mới. Vì vậy, để chỉ ra cách chúng có thể được tạo, tôi đã thêm 2 bước bổ sung cho Debian. Cảm ơn :)
Dinesh Kumar

9

Windows + Apache 2.4, ví dụ:

  1. uncomment ssl_module trong httpd.conftập tin của bạn .

    LoadModule ssl_module modules/mod_ssl.so
    
  2. nghe cổng 443 giống như cổng 80 trong httpd.conftệp của bạn .

    Listen 80
    Listen 443
    
  3. uncomment Bao gồm máy chủ ảo trong httpd.conftệp của bạn .

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. thêm Virtualhost trong của bạn 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>
    

chỉ có số cổng 443SSL......dòng khác với cấu hình http thông thường.

lưu tập tin cấu hình của bạn và khởi động lại dịch vụ apache. sau đó bạn có thể truy cập https: // localhost /

Trình duyệt web sẽ cảnh báo bạn rằng lần đầu tiên nó không an toàn, chỉ cần chọn tiếp tục.


Điều này đã làm việc cho tôi trên XP Home, Apache 2.4. Sao chép 2 tệp chứng chỉ từ bài trước (bởi Anil Gupta). Mod_ssl không ghi chú và bao gồm httpd-vhosts.conf trong httpd.conf, đã thêm chỉ thị Virtualhost của Anil Gupta (với một số đường dẫn được điều chỉnh) trong httpd-vhosts.conf.
jogi99

7

Nó thực sự khá dễ dàng, giả sử bạn có một cài đặt openssl tiện dụng. (Bạn đang ở nền tảng nào?)

Giả sử bạn đang sử dụng linux / solaris / mac os / x, Apache SSL / TLS mini-HOWTO có một hướng dẫn tuyệt vời mà tôi sẽ không tái tạo ở đây.

Tuy nhiên, tóm tắt điều hành là bạn phải tạo chứng chỉ tự ký. Vì bạn đang chạy apache cho localhost có lẽ là để phát triển (không phải là máy chủ web công cộng), bạn sẽ biết rằng bạn có thể tin tưởng vào chứng chỉ tự ký và có thể bỏ qua các cảnh báo mà trình duyệt của bạn sẽ ném vào bạn.


Xin chào, tôi đang làm việc trên HĐH Windows. Và đối với chứng chỉ tự ký, tôi có phải tải xuống hoặc bằng bất kỳ phương tiện nào khác không?
Cũi.

3
Không. Bạn sẽ tự làm chứng nhận tự ký. Bạn có thiết lập apache httpd + ssl không? Bạn sẽ cần ssl để làm điều này. Trang web này: rubayathasan.com/tutorial/apache-ssl-on-windows có thông tin tốt về việc nhận ssl đi trên windows. Bạn sẽ thực hiện một số công việc dòng lệnh, nhưng dù sao thì điều đó cũng tốt cho bạn. :-)
Pete Clark

3
Các liên kết đã chết :(
kpuccino

Vâng - nó trông như đã chết. Đó là internet dành cho bạn ... Tuy nhiên, liên kết đến CentOS Wiki bên dưới được tham chiếu bởi @kayakinkoder cũng tốt: wiki.centos.org/HowTos/Https Nếu bạn đang sử dụng máy Mac, cách viết này cũng có vẻ hợp lý: ý chính. github.com/nrollr/4daba07c67adcb30693e
Pete Clark

4

Đây phải là công việc Ubuntu, Mint tương tự với Apache2

Đây là một hướng dẫn tốt, vì vậy hãy làm theo

https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-cert ve-on-apache-for-ub Ubuntu-14-04

và để ssl.conf của bạn như thế này hoặc tương tự

<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

bạn có thể lấy nó.

Hy vọng điều này sẽ giúp cho linuxer


2

Nó rất đơn giản,

chỉ cần chạy các lệnh sau

sudo a2enmod ssl

sudo service apache2 restart

sudo a2ensite default-ssl.conf

Thế là xong, bạn đã hoàn thành.

Nếu bạn muốn buộc SSL (luôn luôn sử dụng https), hãy chỉnh sửa tệp:

sudo nano /etc/apache2/sites-available/000-default.conf

và thêm một dòng này

<VirtualHost *:80>
        . . .

        Redirect "/" "https://your_domain_or_IP/"

        . . .
</VirtualHost>

sau đó khởi động lại

sudo service apache2 restart

Và bạn cần phải chạy systemctl reload apache2theo sudo a2ensite default-ssl.conf.
cho đến

2

Cập nhật 2019

Tôi đang đăng câu trả lời này vì tôi đã phải vật lộn với điều này và Chrome đã cập nhật bảo mật của họ bằng cách yêu cầu Tên thay thế chủ đề mà rất nhiều bài đăng không có vì nó không bắt buộc khi chúng được đăng dưới dạng câu trả lời. Tôi giả sử rằng WAMP đã được cài đặt.

BƯỚC 1

Tải xuống OpenSSL Light và cài đặt


BƯỚC 2 (Tùy chọn)

Mặc dù phần này là tùy chọn, nhưng nó giúp thực hiện các lệnh sau này dễ dàng hơn. Nếu bạn bỏ qua bước này, bạn sẽ phải cung cấp đường dẫn đầy đủ đến openssl.exe nơi bạn sẽ thực thi lệnh. Nếu bạn muốn đặt nó thì hãy cập nhật đường dẫn openssl.exe trong Biến môi trường.

Biến môi trường -> Biến hệ thống -> Đường dẫn -> Chỉnh sửa -> Mới -> c: \ Tệp chương trình \ OpenSSL-Win64 \ bin


BƯỚC 3

Tạo một thư mục có tên là key key trong c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/thư mục.

Tạo tệp cấu hình cho CA MyCompanyCA.cnf của bạn với nội dung (bạn có thể thay đổi tệp theo nhu cầu của mình):

[ 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

Tạo tệp cấu hình tiện ích mở rộng MyCompanyLocalhost.ext cho chứng chỉ máy chủ web của bạn:

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

[alt_names]
DNS.1   = localhost
DNS.2   = mycy.mycompany.com


BƯỚC 4

Thực hiện các lệnh này theo thứ tự nhất định để tạo khóa và chứng chỉ:

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

Kết quả là bạn sẽ có các tệp MyCompanyCA.cer , MyCompanyLocalhost.cerMyCompanyLocalhost.pvk .


BƯỚC 5

Cài đặt MyCompanyCA.cer dưới

Bảng điều khiển -> Quản lý chứng chỉ người dùng -> Cơ quan chứng nhận gốc đáng tin cậy -> Chứng chỉ

Để cài đặt MyCompanyLocalhost.cer, chỉ cần nhấp đúp vào nó.


BƯỚC 6

Mở c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.confbỏ bình luận (xóa #) 3 dòng sau:

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so


BƯỚC 7

Mở c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.confvà thay đổi tất cả các tham số thành các tham số hiển thị bên dưới:

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"

Lưu ý: Đây là phần khó khăn. Nếu bạn mắc một lỗi nhỏ trong khi chỉnh sửa tệp này, SSL sẽ không hoạt động. Tạo một bản sao của nó trước khi bạn chỉnh sửa nó.


BƯỚC 8

Khởi động lại Wamp và Chrome. Localhost hiện an toàn: https: // localhost


1

Cách làm này cho CentOS rất dễ theo dõi và chỉ mất khoảng 5 phút: https://wiki.centos.org/HowTos/Https

Tôi sẽ không nêu chi tiết từng bước ở đây, nhưng các bước chính là:

1.) Cài đặt mô-đun openssl cho apache, nếu chưa được cài đặt

2.) Tạo chứng chỉ tự ký

- Tại thời điểm này, bạn sẽ có thể truy cập https: // localhost thành công

3.) Thiết lập máy chủ ảo nếu cần


1

Điều này hoạt động trên Windows 10 với Apache24:

1 - Thêm cái này ở dưới cùng của 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 - Thêm server.crtserver.key các tập tin trongC:/Apache24/conf/ssl thư mục. Xem các câu trả lời khác trên trang này để tìm 2 tệp đó.

Đó là nó!


Có cái này hoạt động. Tôi đã sử dụng bước 1 - 3 từ StephanieQ để tạo chứng chỉ và hơn "openssl x509 -req -in server.csr -signkey server.key -out server.crt" để tạo tệp * .crt bằng cygwin.
b3wii

1

tl; dr

ssh -R youruniquesubdomain:80:localhost:3000 serveo.net

Và môi trường địa phương của bạn có thể được truy cập từ https://youruniquesubdomain.serveo.net

Serveo là tốt nhất

  • Không đăng ký.
  • Không cài đặt.
  • Có HTTPS.
  • Có thể truy cập trên toàn thế giới.
  • Bạn có thể chỉ định một sửa chữa tùy chỉnh, tên miền phụ.
  • Bạn có thể tự lưu trữ nó, vì vậy bạn có thể sử dụng tên miền của riêng mình và là bằng chứng trong tương lai, ngay cả khi dịch vụ ngừng hoạt động.

Tôi không thể tin khi tôi tìm thấy dịch vụ này. Nó cung cấp mọi thứ và nó là dễ sử dụng nhất. Nếu có một công cụ dễ dàng và không đau như vậy cho mọi vấn đề ...


1

Chạy Apache trên Windows 10 tại đây. Tôi không thể khiến Chrome tin tưởng vào chứng chỉ được Simon đưa ra trong câu trả lời hàng đầu. Điều cuối cùng tôi làm là sử dụng PowerShell để tạo chứng chỉ tự ký.

Bước 1 - Tạo chứng chỉ tự ký

Trong PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" 1

Bước 2 - Cấu hình và xuất chứng chỉ

Nhập Certificatevào thanh tìm kiếm của Windows, nhấp vàoManage Computer Certificates mục bảng điều khiển được đề xuất.

Từ chương trình Quản lý chứng chỉ xuất hiện (certlm), bây giờ bạn sẽ thấy một localhostkhóa bên dưới Personal >> Certificates.

Tôi đã sao chép chứng chỉ này vào Trusted Root Certification Authorities. Tôi sẽ thành thật rằng tôi không chắc nếu điều đó là cần thiết.

Chọn chứng chỉ mới được sao chép, nhấp đúp vào nó (chứng chỉ localhost). Từ phương thức Chứng chỉ, nhấp vào Detailstab, sau đó là Copy to File...nút.

Điều này sẽ đưa lên và xuất Wizard, tôi chọn xuất khóa riêng, bấm tiếp theo. Tôi cũng đã chọn Export all extended properties(một lần nữa, tôi không chắc chắn nếu điều đó là cần thiết). Tôi đã chọn sử dụng một mật khẩu đơn giản ( pass) và mã hóa mặc định. Chọn một thư mục để xuất và đặt tên tệp. Bạn luôn có thể di chuyển và đổi tên tập tin nếu cần thiết. Để đơn giản, hãy sao chép nó vào thư mục conf của bạn trong phần cài đặt Apache của bạn (Trong trường hợp của tôi C:\apache\conf:) và đặt tên cho tệp myCert(tệp kết quả sẽ là một.pfx tệp)

Bước 3 - Chuyển đổi .pfxtệp để sử dụng với Apache

Từ đây về cơ bản tôi đã làm theo hướng dẫn ở đây , nhưng tôi sẽ thêm hướng dẫn ở đây (điều chỉnh cho các cài đặt của chúng tôi) trong trường hợp trang web bị sập.

Mở Dấu nhắc lệnh của bạn trong /apache/conf/thư mục
Chạy các lệnh sau: Lưu ý: Điều này giả sử bạn có openssl.exetrongbin thư mục trong thư mục gốc apache (đây phải là tiêu chuẩn / mặc định)

..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem

Điều này sẽ nhắc bạn nhập mật khẩu, nhập những gì bạn nhập cho Bước 2 khi bạn xuất .pfx tệp. Trong trường hợp của tôi, đây là pass. Tôi đã nhập cùng một mật khẩu cho cụm từ PEM và một lần nữa để xác minh. Điều này sẽ tạo ra một tập tin mới được gọi privateKey.pemtrong thư mục conf của bạn.

Sau đó chạy

..\bin\openssl rsa -in privateKey.pem -out private.pem

Một lần nữa, bạn sẽ được nhắc nhập mật khẩu ( Enter pass phrase for privateKey.pem:), sử dụng mật khẩu bạn đã đặt privateKey.pem. (Trong trường hợp của tôi, pass)
Bạn sẽ thấy một thông báo cho biết writing RSA keyvà một tệp mới được gọi làprivate.pem trong conf/thư mục của bạn . Đây sẽ là SSLCertertKeyFile của bạn.

Bây giờ để tạo Chứng chỉ máy chủ tương ứng. Chạy:

..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem

Điều này sẽ nhắc bạn nhập mật khẩu, nhập những gì bạn nhập cho Bước 2 khi bạn xuất .pfxtệp. Nhập nó và bây giờ bạn sẽ có một tệp được gọi EntrustCert.pemtrongconf thư mục . Đây là SSLCertertFile của bạn

Bước 4 - Cấu hình httpd.conf

Sử dụng các tệp mới được tạo như khóa và chứng chỉ của máy chủ. Hãy chắc chắn để thay đổi gốc tài liệu của bạn đến nơi tập tin của bạn!

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>

Cũng trong httpd.conf:

  • Đảm bảo LoadModule ssl_module modules/mod_ssl.sokhông bị lỗi (không# ở phía trước)
  • Thất bại LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  • Thất bại LoadModule http2_module modules/mod_http2.so
  • Uncomment Include conf/extra/httpd-ssl.conf (LƯU Ý: Đảm bảo rằng tệp nằm ở đâu!)

Tôi cũng có các thư viện ssl curl và open bao gồm:

# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"

Các mô-đun này không cần thiết, nhưng tôi sẽ lưu ý rằng tôi đã bật chúng:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so

Bước 5 - Cấu hình httpd-ssl.conf

Trong extra/thư mục trong conf/thư mục, bạn sẽ thấy một tệp có tênhttpd-ssl.conf .

5a. Thay đổiDocumentRoot - Thay đổi DocumentRoottừ mặc định sang thư mục chứa tệp của bạn.

5b. Thay đổiServerName - Thay đổi ServerNametừ mặc định (giống như www.example.com:443) thànhlocalhost:443

5c. Thay đổi ThaySSLCertificateFile
đổi SSLCertificateFiletừ mặc định ( ${SRVROOT}/conf/server.crt) thành${SRVROOT}/conf/EntrustCert.pem

5c. Thay đổi ThaySSLCertificateKeyFile
đổi SSLCertificateKeyFiletừ mặc định ( ${SRVROOT}/conf/server.key) thành${SRVROOT}/conf/private.pem

Tất cả cùng nhau, trong <VirtualHost _default_:443>thẻ.

#   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"

Khởi động lại Apache

Sau khi thực hiện những thay đổi này, bạn sẽ có thể khởi động lại Apache và điều hướng đến https: // localhost mà không cần cảnh báo bảo mật và một ổ khóa nhỏ!

Bảo mật localhost

Tôi hi vọng điêu nay se giup được ai đo! 😊

Nguồn:
1.) Câu trả lời của Auri Rahimzadeh về việc tạo chứng chỉ tự ký
2.) Entrust Datacard - Làm cách nào để chuyển đổi một .pfx được sử dụng với máy chủ Apache?


0

Một phương pháp đơn giản khác là sử dụng Python Server trong Ubuntu.

  1. Tạo server.xml bằng lệnh sau trong terminal:

    openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

    Lưu ý: Giả sử bạn đã cài đặt openssl .

  2. Lưu mã dưới đây trong một tệp có tên simple-https-server.pytrong bất kỳ thư mục bạn muốn chạy máy chủ.

    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()
    
  3. Chạy máy chủ từ thiết bị đầu cuối:

    python simple-https-server.py

  4. Truy cập trang tại:

    https://localhost:4443

Ghi chú thêm ::

  1. Bạn có thể thay đổi cổng trong simple-https-server.pytập tin trong dòng

    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

  2. Bạn có thể thay đổi localhostIP của mình trong cùng một dòng trên:

    httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

    và truy cập trang trên bất kỳ thiết bị nào mà mạng của bạn kết nối. Điều này rất tiện lợi trong các trường hợp như "bạn phải kiểm tra API Geo Geo HTML5 trên thiết bị di động và Chrome chỉ giới hạn API trong các kết nối an toàn".

Chuyên gia: https://gist.github.com/dergachev/7028596

http://www.piware.de/2011/01/creating-an-https-server-in-python/


0

Đối với những người sử dụng macOS, đây là một hướng dẫn tuyệt vời https://getgrav.org/blog/macos-sierra-apache-multipl-php-versions để thiết lập môi trường phát triển web cục bộ của bạn. Trong phần 3 của nó https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller giải thích cách thiết lập apache với chứng chỉ tự ký:

Đây là lệnh chính:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

Nhưng có một vài bước bạn cần phải làm theo, vì vậy hãy kiểm tra và chúc may mắn! ;)


0

Tôi muốn thêm một cái gì đó vào câu trả lời rất hay của @CodeWar Warrior, hoạt động hoàn hảo trên Chrome, nhưng đối với Firefox cần thêm một bước.

Vì Firefox không đẩy CA Chứng chỉ mà Windows làm theo mặc định, bạn cần tiếp tục about:config, cuộn xuốngsecurity.enterprise_roots.enabled và thay đổi thành đúng.

Bây giờ chứng chỉ của bạn sẽ được xem là hợp lệ trên Firefox.

Tất nhiên điều này chỉ dành cho mục đích phát triển, vì ssl tin tưởng là mối quan tâm bảo mật quan trọng và chỉ thay đổi cài đặt này nếu bạn biết các tác động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.