sudoを使用してUbuntuに自己署名OpenSSL証明書を作成しましたが、Apacheが認識できません


1

こんにちは、ubuntu 14.04を実行しているLinuxインスタンスサーバーです。私はウェブサイトをセットアップしましたが、それは後でhttpではなくhttpsが必要だと気づきました。そのため、最初に自己署名証明書を作成しました。以下のコマンドを渡すことにより

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

すべての手順を完了した後、https://を追加するとhttp://でのみ機能するため、Webサイトにアクセスできません。ルートとして作成されたsudoを使用してキーを作成しているときに、www-dataがそれを認識しないと感じています。SSLエラーログを確認しましたが、これら2つのことを繰り返します。

[ssl:warn] [pid 29081] AH01906: RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

[ssl:warn] [pid 29081] AH01909: RSA certificate configured for 52.24.182.161:443 does NOT include an ID which matches the server name

この時点で立ち往生しています。自己署名証明書と自分のサイトを使用してhttps://を使用するだけです。

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerAdmin webmaster@localhost
    ServerName 52.24.182.161
    DocumentRoot /var/www/html/website

    ErrorLog ${APACHE_LOG_DIR}/website-ssl-error.log
    CustomLog ${APACHE_LOG_DIR}/website-ssl-access.log combined

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

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
    </Directory>
    BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    # MSIE 7 and newer should be able to use keepalive
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>

私の出力 openssl x509 -noout -text -in /etc/apache2/ssl/apache.crt

Certificate:
Data:
    Version: 3 (0x2)
    Serial Number: 17752245544736062623 (0xf65ca5447b80fc9f)
Signature Algorithm: sha256WithRSAEncryption
    Issuer: C=GB, ST=London, L=London city, O=Hom, OU=Digital, CN=sgurung
    Validity
        Not Before: Oct 18 15:47:58 2016 GMT
        Not After : Oct 18 15:47:58 2017 GMT
    Subject: C=GB, ST=London, L=London city, O=Hom, OU=Digital, CN=sgurung
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (2048 bit)
            Modulus:
                00:96:e5:4f:f9:c6:fc:4c:62:7d:ef:a1:64:1d:9a:
                1a:79:c2:bb:1d:38:54:88:c3:c8:b6:74:45:49:ec:
                b6:ca:fd:eb:94:0b:13:0b:cc:0d:2c:a4:45:77:0c:
                07:6f:20:01:9a:21:61:77:fa:3d:6b:3d:4e:6d:ef:
                7d:5a:85:82:9f:11:82:78:70:50:82:97:9d:c6:ae:
                b5:8a:fc:a3:3d:51:db:92:66:70:3d:86:76:f0:95:
                29:cc:20:f4:a5:50:b4:30:82:d7:7b:ff:36:87:90:
                42:63:c9:d0:75:29:7a:7b:a3:78:7d:80:4b:af:19:
                d1:15:90:ff:06:1a:4c:fb:ef:83:ee:56:b9:dd:1f:
                74:9c:e7:d7:7a:11:7e:74:c2:55:e3:3e:86:f5:fe:
                a5:f2:94:3e:21:0a:01:62:0e:a7:7d:32:b6:a5:16:
                e8:cd:46:de:c5:ea:c4:be:88:42:f6:bf:72:75:96:
                a8:82:f4:e1:31:4c:a8:62:ac:54:d2:bc:5c:42:21:
                d9:29:a7:c7:73:a2:12:31:04:bf:37:08:4e:55:2f:
                46:13:d8:0c:4b:8c:73:ad:eb:f1:8a:92:85:c9:22:
                28:04:de:91:71:d6:7f:ca:43:08:ad:f4:72:24:a9:
                f1:e4:12:fa:d8:97:50:e5:a9:9f:91:2d:db:2b:4e:
                90:03
            Exponent: 65537 (0x10001)
    X509v3 extensions:
        X509v3 Subject Key Identifier: 
            35:50:60:0B:18:C6:A4:6C:74:4D:6B:9A:A2:4C:5F:57:16:93:56:60
        X509v3 Authority Key Identifier: 
            keyid:35:50:60:0B:18:C6:A4:6C:74:4D:6B:9A:A2:4C:5F:57:16:93:56:60

        X509v3 Basic Constraints: 
            CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
     46:8f:75:06:48:8c:0a:c6:45:d0:f6:26:99:eb:7a:e2:31:e6:
     4a:76:7f:ba:af:30:ed:d8:04:39:e5:26:94:23:bf:38:1c:28:
     df:1f:d2:63:b7:36:bb:3e:aa:9a:1b:35:c0:db:73:98:5a:6a:
     41:3a:64:6e:53:33:c1:92:63:7c:3a:3a:1e:1c:9b:ed:55:eb:
     dd:eb:cb:50:a4:56:19:46:8f:8b:55:e6:97:0d:b0:53:07:b1:
     e6:8f:4b:6a:a1:ba:dd:d1:1e:14:9a:49:f9:b0:fd:40:0f:e3:
     a5:7f:fd:ab:d3:fc:ff:e0:3d:5c:46:91:f4:b4:7d:fb:56:f6:
     3a:ec:64:ac:18:1b:d5:10:ec:c9:7c:c4:3f:7c:98:4a:80:ed:
     66:84:d8:12:e3:ff:38:9b:03:51:67:89:ba:33:af:88:5c:c4:
     cd:47:e8:3f:46:2a:ee:c4:a3:b7:96:55:23:80:d5:ed:34:ef:
     3c:7c:6c:ad:1b:dc:4d:69:00:27:85:87:f8:96:92:c0:d0:51:
     b4:47:9e:4f:36:d9:70:b7:55:b8:60:bf:99:b7:e3:4d:b0:8c:
     47:8a:d0:a1:41:76:97:d6:dc:a3:a5:43:b4:aa:c3:6c:f1:e9:
     8b:45:7f:a4:9f:e9:73:73:af:49:ed:32:1c:06:fd:f8:23:36:
     22:5b:74:3c

netstat -tlpn出力

(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address              State           PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:3306          0.0.0.0:*                   LISTEN      -               
tcp6       0      0 :::80                   :::*                        LISTEN      -               
tcp6       0      0 :::22                   :::*                        LISTEN      -               
tcp6       0      0 :::443                  :::*                        LISTEN      -     

証明書が使用される仮想ホスト設定を提供してください。
ダニエルB

ふむ それはちょうど私に起こった:あなたはListenどこかにポート443のための(アクティブな)ディレクティブもありますか?ポート443での着信接続を許可するようにファイアウォールが設定されていますか?
ダニエルB

@DanielB 443が開いています。SSL仮想ホストの開始タグは正しいですか?また、回答の下に、回答に従って行ったことに関するコメントを追加しました。まだログで同様のエラーが発生しています。
Sanjok Gurung

これは警告であり、エラーではありません。関係ありません。を使用して、Apacheがポート443でリッスンしていることを確認してくださいnetstat -tlpn
ダニエルB

@DanielB Iveは質問を編集し、netstatからの出力を追加しました。
Sanjok Gurung

回答:


0

答えはログにあります:

AH01906: RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

そして:

AH01909: RSA certificate configured for 52.24.182.161:443 does NOT include an ID which matches the server name

まず、Webサーバーを実行しています。Webサーバーは、証明機関(証明書を製造するエンティティ)ではなく、エンドエンティティ(証明書を使用するエンティティ)です。

次に、ブラウザに入力するDNS名が証明書の名前と一致する必要があります。これは、CommonName(CN)またはSubjectAlternateName(SAN)フィールドにリストされます。

最初の問題を修正するには、OpenSSL構成ファイルがどこにあるかを見つけます。

$ openssl version -a | grep OPENSSLDIR
OPENSSLDIR: "/etc/pki/tls"

上記はFedoraボックス上にあるため、パスは異なる場合があります。そのディレクトリにはというファイルが必要ですopenssl.cnf。お気に入りのエディターで編集し(明らかにお気に入りがあります)、次の行を見つけます。

basicConstraints=CA:TRUE

この行を削除するか、ハッシュ(#)記号を先頭に追加して無効にします。

#basicConstraints=CA:TRUE

これにより、CA証明書のエラーメッセージが削除されます。

2番目の問題を解決するには、OpenSSLの実行時に入力するCommonName(CN)が、ブラウザに入力するDNS名(URLではなく、https://を含まない)であることを確認するだけです。SubjectAlternateNameを含むより複雑なソリューションがありますが、これは問題を修正する必要があります。


IIRCでは、CAではない自己署名証明書を作成できません。とにかくエラーではなく、警告です。
ダニエルB

@DanielB-basicConstraintがなくても、自己署名証明書を作成できます。試してみてください:-)あなたは正しい、それらは警告ですが、CA証明書であると主張するTLS証明書に直面したときにすべてのクライアントが何をするかを推測することは困難です。他の拡張機能の設定は言うまでもありません。
garethTheRed

実際のところ、難しくありません。デフォルトでは信頼されていないため、追加すると信頼されます。
ダニエルB

1
質問を編集して、次のコマンドの出力openssl x509 -noout -text -in /etc/apache2/ssl/apache-selfsigned.crtとapache configファイルを追加する価値があるかもしれません。
garethTheRed

@DanielB -場合はopenssl.cnf、CA証明書を生成するように構成され、次に可能性(?期待)があることkeyCertSigncrlSignのkeyUsage拡張がとは対照的に、設定されているdigitialSignatureおよび/またはkeyEncipherment暗号化オプションに応じて(TLS証明書に設定されるべき、使用される予定です)。この場合、適切に実装されたクライアントは証明書を拒否する必要があります。それを追加するよりも少し複雑です。もちろん、それらはkeyUsage拡張ではないかもしれません。その場合、追加するだけで機能します。
garethTheRed

0

最後にこれを解決しました。@Danel Bに感謝します。Amazon EC2インスタンスサーバーを使用しているため、インスタンスの最初の起動時にルールをhttpsに設定せず、ルールはhttpのみを許可するようにしました。Amazonコンソールにルールを追加するとnetwork and security group問題が解決しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.