LocalhostのApacheに自己署名証明書を使ってHTTPSを設定するように依頼されましたが、実際にはどうすればよいのでしょうか。まったくわかりません。
私はちょうどこれを試みました - 私はWindows上の私のlocalhost Apacheでいくつかの開発コードをテストする必要がありました。これは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
Apacheのconf\httpd.conf
ファイルを開き、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
- これをあなたのWebファイル用のフォルダに設定しますServerName
- サーバーのホスト名SSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Apacheを再起動してください。
https://localhost/
をロードしてみてください。うまくいけば、あなたはこれまでにそれを作った。他の有用な情報でこの投稿を更新してください。
(スクリーンショットはNeil Obremskiと彼の役に立つ article - 今はかなり時代遅れになっています。)
これにはngrok( https://ngrok.com/ )を使います。 ngrokはコマンドラインツールで、localhost用のトンネルを作成します。 httpとhttpsの両方の接続が作成されます。ダウンロードした後、次のコマンドを実行する必要があります。
ngrok http 80
(バージョン2では、構文はngrok http 80です。バージョン2では、任意のポートをトンネリングできます。)
数秒後、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>
Webサーバーとの間で送受信される情報のセキュリティを保護するために、クライアントとサーバー間の通信の暗号化を有効にすることをお勧めします。これはしばしばSSLと呼ばれます。
それでは、Apache2で自己署名証明書を使ってHTTPSを設定しましょう。私があなたが従うべきであるステップをリストするつもりです:
Sudo apt-get Apache2をインストールしてください。
SudoサービスApache2の状況
出力するはずです
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
この2行を見つけて、あなたの証明書とキーパスに置き換えてください。
頭文字
決勝
cd/etc/Apache2/sites-available /
Sudo a2ensite default-ssl.conf
SudoサービスApache2の再起動
自己署名証明書を使用してサーバーを構成しているため、表示しようとしているページは安全ではないという警告とともに、このようなメッセージが出力されるはずです。
たとえば、Windows + Apache 2.4です。
httpd.conf
ファイルでssl_moduleのコメントを外します。
LoadModule ssl_module modules/mod_ssl.so
httpd.conf
ファイルの80ポートと同じように443ポートをリッスンします。
Listen 80
Listen 443
コメントを外すhttpd.conf
ファイルに仮想ホストを含めます。
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
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>
ポート番号の443
行とSSL......
行だけが通常のhttp configと異なります。
設定ファイルを保存してApacheサービスを再起動します。それなら https:// localhost / にアクセスしてください。
Webブラウザは最初は安全ではないと警告してくるので、そのまま続行を選択してください。
Opensslをインストールすれば便利です。 (どのプラットフォームを使っていますか?)
Linux/solaris/mac os/xを使っていると仮定すると、 VanのApache SSL/TLS mini-HOWTO には再現できない優れたチュートリアルがありますここに。
ただし、要約すると、自己署名証明書を作成する必要があります。ローカルホスト用にApacheを実行しているため(おそらく公共のWebサーバーではないため)、自己署名証明書を信頼でき、ブラウザから通知される警告を無視できることがわかります。
これはUbuntu、MintはApache2と同じように動作するはずです。
これはいいガイドですので、これに従ってください
あなたの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のためにこの助けを願っています
とても簡単です。
以下のコマンドを実行するだけです
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
私はこれに苦労し、Chromeはセキュリティを更新してSubject Alternative Name回答として投稿されたときには必要なかったため、多くの投稿にはありません。 WAMPは既にインストールされていると仮定しています。
ステップ1
ダウンロード OpenSSL Light and install
STEP 2(オプション)
この部分はオプションですが、後でコマンドを実行しやすくします。この手順をスキップする場合は、コマンドを実行するopenssl.exeへのフルパスを指定する必要があります。設定する場合は、環境変数のopenssl.exeパスを更新します。
環境変数->システム変数->パス->編集->新規-> c:\ Program Files\OpenSSL-Win64\bin
STEP 3
c:/wamp64/bin/Apache/apache2.4.27(your version number)/conf/
ディレクトリに“ key”という名前のフォルダーを作成します。
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
Webサーバー証明書の拡張機能構成ファイルMyCompanyLocalhost.extを作成します。
subjectAltName = @alt_names
extendedKeyUsage = serverAuth
[alt_names]
DNS.1 = localhost
DNS.2 = mycy.mycompany.com
ステップ4
これらのコマンドを指定された順序で実行して、キーと証明書を生成します。
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ファイル。
ステップ5
MyCompanyCA.cerの下にインストールします
コントロールパネル->ユーザー証明書の管理->信頼されたルート証明機関->証明書
MyCompanyLocalhost.cerをインストールするには、ダブルクリックします。
STEP 6
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
STEP 7
c:/wamp64/bin/Apache/apache2.4.37/conf/extra/httpd-ssl.conf
を開き、すべてのパラメーターを以下に示すものに変更します。
Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin [email protected]
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は機能しません。編集する前にコピーを作成してください。
STEP 8
WampとChromeを再起動します。ローカルホストが安全になりました: https:// localhost
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
そしてあなたのローカル環境はからアクセスすることができます https://youruniquesubdomain.serveo.net
このサービスを見つけたとき、私は信じられませんでした。それはすべてを提供します、そしてそれは使うのが一番簡単です。すべての問題に対してこのような簡単で痛みのないツールがあるとしたら...
CentOSのためのこの手引きは従うのが簡単で、たった約5分でした: https://wiki.centos.org/HowTos/Https
ここでは各ステップについて詳しく説明しませんが、主なステップは次のとおりです。
1.)Apache用のopensslモジュールをインストールします(まだインストールされていない場合)。
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つのファイルを見つけるためにこのページの他の答えを見なさい。
それでおしまい!
MacOSを使用している人のために、これは素晴らしいガイドです https://getgrav.org/blog/macos-sierra-Apache-multiple-php-versions を設定することローカルWeb開発環境を立ち上げます。その第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はWindowsがデフォルトで行うCA証明書をプッシュしないため、about:config
に進み、security.enterprise_roots.enabled
まで下にスクロールして、trueに変更する必要があります。
これで、Firefoxでも証明書が有効であると見なされます。
もちろん、これは開発目的のみです。これは、sslの信頼が重要なセキュリティ上の懸念事項であり、この設定を変更するのは、その意味がわかっている場合のみです。
ここではWindows 10上でApacheを実行しています。 Simonによるトップの回答で作成された証明書をChromeに信頼させることはできませんでした。私がやってしまったのは、PowerShellを使って自己署名証明書を生成することでした。
PowerShellNew-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1
Windowsの検索バーにCertificate
name__と入力し、提案されているManage Computer Certificates
コントロールパネル項目をクリックします。
表示される証明書管理プログラム(certlm)から、Personal >> Certificates
の下にlocalhost
name__キーが表示されているはずです。
この証明書をTrusted Root Certification Authorities
にコピーしました。それが必要かどうか私にはわからないという点で私は正直に言うでしょう。
新しくコピーした証明書を選択して、それをダブルクリックします(localhost証明書)。証明書モーダルからDetails
name__タブをクリックし、次にCopy to File...
ボタンをクリックします。
これにより、エクスポートウィザードが起動します。秘密キーをエクスポートすることを選択し、[次へ]をクリックします。私もExport all extended properties
を選びました(これも必要なのかどうかはわかりません)。単純なパスワード(pass
name__)とデフォルトの暗号化を使用することにしました。エクスポート先のフォルダを選択してファイルに名前を付けます。必要に応じていつでもファイルを移動して名前を変更することができます。簡単にするために、それをあなたのApacheインストールの下のあなたのconfフォルダにコピーし(私の場合ではC:\Apache\conf
)そしてファイルにmyCert
name__という名前を付けましょう(結果のファイルは.pfx
ファイルになります)
.pfx
ファイルを変換するここから私は基本的にチュートリアルに従いました ここ 、しかしそのサイトがダウンした場合のためにここに(私達の設定のために微調整された)指示を加えます。
/Apache/conf/
フォルダでコマンドプロンプトを開きます
次のコマンドを実行します。注:これは、Apacheのbin
name__フォルダーにopenssl.exe
があることを前提としています。ルートフォルダ(これは標準/デフォルトであるべきです)
..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem
これでパスワードの入力を求められますので、.pfx
ファイルをエクスポートしたときにステップ2で入力したものを入力してください。私の場合、これはpass
name__です。 PEMフレーズと同じパスワードをもう一度入力して確認しました。これでconfフォルダにprivateKey.pem
という新しいファイルが作成されます。
そして実行します
..\bin\openssl rsa -in privateKey.pem -out private.pem
ここでもパスワード(Enter pass phrase for privateKey.pem:
)の入力を求められますので、privateKey.pem
に設定したパスワードを使用してください。 (私の場合はpass
name__)writing RSA key
というメッセージと、private.pem
フォルダーにconf/
という新しいファイルが表示されます。 これはあなたのSSLCertificateKeyFileになります。
今すぐ対応するサーバー証明書を生成します。を実行
..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem
これでパスワードの入力を求められますので、.pfx
ファイルをエクスポートしたときにステップ2で入力したものを入力してください。それを入力すると、conf
name__フォルダーにEntrustCert.pem
というファイルができます。 これはあなたのSSLCertificateFileです
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
nameを変更する__ - DocumentRoot
name__をデフォルトからファイルがあるディレクトリに変更します。
5b。 ServerName
nameを変更する__ - ServerName
name__をデフォルト(www.example.com:443
のようなもの)からlocalhost:443
に変更してください
5c。 SSLCertificateFile
nameを変更します__SSLCertificateFile
name__をデフォルト(${SRVROOT}/conf/server.crt
)から${SRVROOT}/conf/EntrustCert.pem
に変更します
5c。 SSLCertificateKeyFile
nameを変更します__SSLCertificateKeyFile
name__をデフォルト(${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 [email protected]
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 Datacard - Apacheサーバーで使用するために.pfxを変換するにはどうすればいいですか?
もう1つの簡単な方法は、UbuntuでPython Serverを使用することです。
ターミナルで次のコマンドを使用してserver.xmlを生成します。
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
注: openssl がインストールされていると仮定します。
以下のコードを、サーバを実行したいanyディレクトリの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/