ApacheWebサーバーでSSLを実行しようとしています。
ドメイン設定用のDNSをまだ持っていませんが、それが問題ですか?
WebサーバーでSSLを設定するにはどうすればよいですか?
Apacheを起動すると、失敗します。
root@vannevar:/etc/Apache2/ssl# service Apache2 start
* Starting web server Apache2 Action 'start' failed.
The Apache error log may have more information.
ログは、証明書を読み取ることができないことを示しています。
[Thu Jun 28 15:01:02 2012] [error] Init: Unable to read server certificate from file /etc/Apache2/ssl/www.example.com.csr
[Thu Jun 28 15:01:02 2012] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Thu Jun 28 15:01:02 2012] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
/etc/Apache2/httpd.conf
の内容
ServerName [SERVERIP]
/etc/Apache2/ports.conf
の内容
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/Apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/Apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost [SERVERIP]:443
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/Apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
/etc/Apache2/sites-available/www.example.com
の内容
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /srv/sites/example.com/public/
ErrorLog /srv/sites/example.com/logs/error.log
CustomLog /srv/sites/example.com/logs/access.log combined
</VirtualHost>
<VirtualHost [SERVERIP]:443>
SSLEngine On
SSLCertificateFile /etc/Apache2/ssl/www.example.com.csr
SSLCertificateKeyFile /etc/Apache2/ssl/www.example.com.key
SSLCACertificateFile /etc/Apache2/ssl/comodo.crt
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /srv/sites/example.com/public/
ErrorLog /srv/sites/example.com/logs/error.log
CustomLog /srv/sites/example.com/logs/access.log combined
</VirtualHost>
更新:
Dreamhost(私が降りようとしている)には、すでにssl/httpsのドメインがあります。dreamhost管理者証明書、秘密鍵、および中間証明書の3つの鍵を確認できます。これらで何かできますか? dreamhostがcomodoを使用していて、私のWebサイトがPositiveSSLと言っていることがわかります。したがって、comodoのWebサイトには、 ルート証明書 と 中間証明書 があります。これらの5つの証明書は、openssl req -new -days 365 -nodes -keyout www.mydomain.com.key -out www.mydomain.com.csr
コマンドによって作成された2つの証明書と何の関係がありますか?これらの2つは実際の証明書を要求していますか?
Apacheのエラーがファイル/etc/Apache2/sites-available/www.example/com
を参照していることに気付きました。ここで、SSLCertificateFile /etc/Apache2/ssl/www.example.com.csr
のファイルタイプをめちゃくちゃにしました。 linode docs によると.crt
であるはずです。
アップデート2
そこで、dreamhostにアクセスして、次のファイルにキーをコピーし、次のファイルをマッピングしました。
certificate => dh.crt
private key => dh.key
intermediate certificate => dh.cer
/sites-available/example.com
の接続を変更し、機能しました(Apacheが機能しました)。これは、ドメインに接続したときにsslが機能することを意味しますか?
ここで投票したりコメントしたりすることはできませんが、エイドリアンペレスは正しいです。あなたは証明書を使用していませんが、次の行で証明書署名要求を使用しています。
SSLCertificateFile /etc/Apache2/ssl/www.example.com.csr
本人確認と証明書の生成を行うには、CSRを認証局に送信する必要があります。次のコマンドを使用して、これを自己生成できます。
openssl x509 -req -days 365 -in www.example.com.csr -signkey www.example.com.key -out www.example.com.crt
そして変化する:
SSLCertificateFile /etc/Apache2/ssl/www.example.com.csr
に:
SSLCertificateFile /etc/Apache2/ssl/www.example.com.crt
ただし、これは自己署名証明書であるため信頼されていないため、ブラウザでサイトにアクセスすると警告が表示されます。それでも、プロセスを理解し、サイトが機能していることをテストするための良い方法です。基本的な手順は次のとおりです。
パーミッションに関しては、key/crtがroot(chmod 600)によってのみ読み取り/書き込み可能であることを確認してください。そうでない場合、Apacheはうめき声を上げます。
お役に立てれば
Javaプログラム Keystore Explorer をダウンロードして、証明書を開いて表示し、証明書が有効であることを確認できます。Apacheの場合、証明書が特定の形式 このWebサイト 必要な形式を説明するのに役立つ場合があります。これはPEMのようです。
たぶん私は間違っていますが、ファイルwww.example.com.csrに証明書が含まれているかどうかを確認してください。通常、csr拡張子の付いたファイルには、CAで署名する要求が含まれています。
また、他のユーザーが言っているように権限やパスを確認することもできますが、問題はファイルの内容にあると思います。
チェックしてファイルを削除し、新しい空のファイルを作成して、証明書データをファイルに貼り付けることができます。
よろしく!
実際の証明書を取得するまでSSLを設定することはできません。あなたが持っているのは、認証局に証明書を発行させるために送信されるべき証明書の要求です。また、DNSが機能していなくてもサーバーを機能させることはできますが、クライアントはIP以外ではサーバーにアクセスできません。これにより、証明書がIPを検証できないため、警告が生成されます。
更新:あなたは今すべてをやったようです。他に問題がある場合は、DNSが設定されたら解決できます。
証明書ファイルが読み取れない(または欠落している)ようです
[Thu Jun 28 15:01:02 2012] [error] Init: Unable to read server certificate from file /etc/Apache2/ssl/www.example.com.csr
権限/パスを確認しましたか?
また、DNSを設定する必要があります。そうしないと、証明書にエラーが表示されます(ブラウザによって異なります)。