ssl xampp - 如何在本地主機上允許HTTPS for Apache?




localhost (11)

我被要求在本地主機上使用Apache上的自簽名證書設置HTTPS,但我該怎麼做呢? 我根本不知道。


Answers

這實際上很簡單,假設你有一個openssl安裝方便。 (你在哪個平台上?)

假設你在linux / solaris / mac os / x上, Van的Apache SSL / TLS mini-HOWTO有一個很好的演練,我不會在這裡複製。

但是,執行摘要是您必須創建自簽名證書。 由於您運行的Apache本地主機大概是為了開發(即不是公共Web服務器),您會知道您可以信任自簽名證書,並且可以忽略瀏覽器向您發出的警告。


我剛剛嘗試過 - 我需要在Windows上的本地主機Apache上測試一些開發代碼。 這是WAAAY比它應該更困難。 但是,這裡有一些步驟,在經過大量的頭髮打理之後才能實現。

我發現我的Apache安裝附帶了openssl.exe ,這很有幫助。 如果您沒有副本,則需要下載它。 我的副本在Apache2\bin文件夾中,這是我在下面引用它的方式。

腳步:

  1. 確保您擁有對Apache conf文件夾的寫入權限
  2. Apache2\conf文件夾中打開命令提示符
  3. 類型
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. 您可以將所有問題留空,除非:

    • PEM密碼短語:臨時密碼,如“密碼”
    • 通用名稱:您的服務器的主機名稱

  5. 完成後,輸入
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. 輸入以下內容以生成自簽名證書:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. 打開Apache的conf\httpd.conf文件並確保SSL模塊已啟用 - 在此行的開始處不應有散列:
    LoadModule ssl_module modules/mod_ssl.so

  8. 一些Apache安裝將SSL配置放置在單獨的文件中。 如果是這樣,請確保包含SSL conf文件。 在我的情況下,我不得不取消註釋這一行:
    Include conf/extra/httpd-ssl.conf

  9. 在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 - 將其設置為Web文件的文件夾
    • ServerName - 服務器的主機名
    • SSLCertificateFile "conf/blarg.cert"
    • SSLCertificateKeyFile "conf/blarg.key"

  10. 重新啟動Apache。

  11. 嘗試在瀏覽器中加載https://localhost/

希望你能做到這一點。 隨時用任何其他有用的信息更新這篇文章。

(Neil Obremski的屏幕截圖和他的有用article - 雖然現在已經過時了。)


這裡是最簡單的方法來做到這一點

首先將這些server.crtserver.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>

另一個簡單的方法是在Ubuntu中使用Python服務器。

  1. 在終端中使用以下命令生成server.xml:

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

    注意:假設你已經安裝了openssl

  2. 將以下代碼保存在任何要運行服務器的目錄中名為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()
    
  3. 從終端運行服務器:

    python simple-https-server.py

  4. 訪問頁面:

    https://localhost:4443

額外的筆記 ::

  1. 您可以更改simple-https-server.py文件中的端口

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

  2. 您可以在上面的同一行中將localhost更改為您的IP

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

    並訪問網絡連接的任何設備上的頁面。 在“您必須在移動設備上測試HTML5 GeoLocation API並且Chrome僅以安全連接限制API”的情況下,這非常方便。

要點: https://gist.github.com/dergachev/7028596https://gist.github.com/dergachev/7028596

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


CentOS的這個指南很容易遵循,只需要大約5分鐘: wiki.centos.org/HowTos/Httpswiki.centos.org/HowTos/Https

我不會在此詳細介紹每一步,但主要步驟是:

1.)為Apache安裝openssl模塊,如果尚未安裝

2.)生成一個自簽名證書

- 此時,您應該能夠成功訪問https://localhost/

3.)如果需要,建立一個虛擬主機


這應該是Ubuntu的工作,Mint與Apache2類似

這是一個很好的指導,所以遵循這一點

https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04

並讓你的ssl.conf像這樣或類似的類似

<VirtualHost _default_:443>
        ServerAdmin [email protected]
        ServerName localhost
        ServerAlias www.localhost.com

        DocumentRoot /var/www


    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

你可以得到它。

希望對linuxer有幫助


我使用ngrok( https://ngrok.com/ )。 ngrok是一個命令行工具,為localhost創建一個隧道。 它創建http和https連接。 下載完成後,需要運行以下命令:

ngrok http 80

(在版本2中,語法是:ngrok http 80.在版本2中,任何端口都可以通過隧道。)

幾秒鐘後,它會出現兩個網址:

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

現在,這兩個網址都指向本地主機。


例如Windows + Apache 2.4:

  1. httpd.conf文件中取消註釋ssl_module。

    LoadModule ssl_module modules/mod_ssl.so
    
  2. 聽聽你的httpd.conf文件中的80端口443端口。

    Listen 80
    Listen 443
    
  3. 取消註釋將虛擬主機包含在您的httpd.conf文件中。

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. conf/extra/httpd-vhosts.conf添加VirtualHost

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

只有端口號443SSL......線與普通的http config不同。

保存你的配置文件並重新啟動apache服務。 那麼你可以訪問https://localhost/

網絡瀏覽器會在第一時間警告您它不安全,只需選擇繼續。


為了保護髮送到Web服務器和從Web服務器發送的信息的安全性,啟用客戶端和服務器之間的通信加密是一個好主意。 這通常被稱為SSL

因此,讓我們在Apache2上使用自簽名證書設置HTTPS。 我將列出您應該遵循的步驟:

  • 在你的機器上安裝apache2網絡服務器。 對於linux機器打開終端並鍵入

sudo apt-get安裝apache2

  • 安裝成功後,通過執行命令檢查apache2服務的狀態

sudo服務apache2狀態

它應該輸出

  • 導航到瀏覽器並鍵入

HTTP://本地主機:80

驗證你是否像這樣獲得了apache2的默認頁面。

  • 為了加密Web連接,我們需要來自CA(證書頒發機構)的證書,或者我們可以使用自簽名證書。 我們使用以下命令創建一個自簽名證書。

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

請按照如下所示填寫相應信息。

mykey.keymycert.pem應該在你目前的工作目錄中創建。

  • 如果在一個普通的地方移動證書和密鑰並且apache2 web服務器很容易找到它們,那將會很不錯。 所以讓我們執行下面的命令

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / private

  • 讓我們在您的服務器上啟用SSL模式

sudo a2enmod ssl

它應該像這樣輸出

  • 讓我們配置apache2使用我們上面生成的自簽名證書和密鑰。

sudo vi /etc/apache2/sites-available/default-ssl.conf

請找到這兩行,並將其替換為您的證書和關鍵路徑。

初始

最後

  • 啟用該網站

cd / etc / apache2 / sites-available /

sudo a2ensite default-ssl.conf

  • 重新啟動apache2服務

sudo服務apache2重啟

  • 驗證HTTPS上的apache2網絡服務器。 再次打開瀏覽器並輸入

https://localhost/

它應該輸出類似這樣的警告,即您要查看的頁面不安全,因為我們已使用自簽名證書配置服務器。

  • 恭喜你已經使用HTTPS端點配置了你的apache2,現在點擊高級 - > 添加異常 - > 確認安全異常 ,你將再次看到默認頁面。


這適用於Apache 10的Windows 10:

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 - 在C:/Apache24/conf/ssl文件夾中添加server.crtserver.key文件。 查看本頁其他答案以找到這2個文件。

而已!


這是我在本地機器上使用的腳本來設置自簽名證書中的SAN(subjectAltName)。

此腳本獲取域名(example.com),並在同一證書中為* .example.com和example.com生成SAN。 以下部分進行了評論。 命名腳本(例如generate-ssl.sh )並為其授予可執行權限。 這些文件將被寫入與腳本相同的目錄。

Chrome 58以後需要在自簽名證書中設置SAN。

#!/usr/bin/env bash

# Set the TLD domain we want to use
BASE_DOMAIN="example.com"

# Days for the cert to live
DAYS=1095

# A blank passphrase
PASSPHRASE=""

# Generated configuration file
CONFIG_FILE="config.txt"

cat > $CONFIG_FILE <<-EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
x509_extensions = v3_req
distinguished_name = dn

[dn]
C = CA
ST = BC
L = Vancouver
O = Example Corp
OU = Testing Domain
emailAddress = [email protected]$BASE_DOMAIN
CN = $BASE_DOMAIN

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.$BASE_DOMAIN
DNS.2 = $BASE_DOMAIN
EOF

# The file name can be anything
FILE_NAME="$BASE_DOMAIN"

# Remove previous keys
echo "Removing existing certs like $FILE_NAME.*"
chmod 770 $FILE_NAME.*
rm $FILE_NAME.*

echo "Generating certs for $BASE_DOMAIN"

# Generate our Private Key, CSR and Certificate
# Use SHA-2 as SHA-1 is unsupported from Jan 1, 2017

openssl req -new -x509 -newkey rsa:2048 -sha256 -nodes -keyout "$FILE_NAME.key" -days $DAYS -out "$FILE_NAME.crt" -passin pass:$PASSPHRASE -config "$CONFIG_FILE"

# OPTIONAL - write an info to see the details of the generated crt
openssl x509 -noout -fingerprint -text < "$FILE_NAME.crt" > "$FILE_NAME.info"

# Protect the key
chmod 400 "$FILE_NAME.key"

此腳本還會寫入一個信息文件,以便您可以檢查新證書並驗證SAN是否正確設置。

                ...
                28:dd:b8:1e:34:b5:b1:44:1a:60:6d:e3:3c:5a:c4:
                da:3d
            Exponent: 65537 (0x10001)
    X509v3 extensions:
        X509v3 Subject Alternative Name: 
            DNS:*.example.com, DNS:example.com
Signature Algorithm: sha256WithRSAEncryption
     3b:35:5a:d6:9e:92:4f:fc:f4:f4:87:78:cd:c7:8d:cd:8c:cc:
     ...

如果您使用的是Apache,那麼您可以在配置文件中引用上述證書,如下所示:

<VirtualHost _default_:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/htdocs

    SSLEngine on
    SSLCertificateFile path/to/your/example.com.crt
    SSLCertificateKeyFile path/to/your/example.com.key
</VirtualHost>

請記住重新啟動您的Apache(或Nginx或IIS)服務器以使新證書生效。







apache ssl https localhost