質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

4315閲覧

ラズベリーパイ3にLet's Encryptを利用してSSLを導入したいがエラーが発生しWEBサーバーが利用できなくなる

T-Moriyama

総合スコア11

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2018/02/14 15:34

編集2018/02/15 01:51

表題の通りSSLを導入したいのですがうまくいきません。

Raspbianのバージョン
$ sudo cat /etc/debian_version
9.3
$


ドメイン取得済(以下**{mydomain}**)
DDNS(mydns.jp)を利用しWANのグローバルIPに紐付け

NTT西日本のHGW(PR-400KI)の静的NAT設定にてポートは解放済み

iptabelesの設定
target / port / source / destnation
ACCEPT / tcp / anywhere / anywhere state RELATED,ESTABLISHED
ACCEPT / udp / anywhere / anywhere udp spt:domain
ACCEPT / tcp / anywhere / anywhere tcp dpt:ssh
ACCEPT / tcp / anywhere / anywhere tcp dpt:https
ACCEPT / tcp / anywhere / anywhere tcp dpt:http

外部ネットワークのブラウザから"http://{mydomain}/"で表示されることを確認


ラズベリーパイでの作業

certbotの導入
https://certbot.eff.org/ から apache/Debian(other)用のcertbot-autoをダウンロード

$ sudo systemctl stop apache2
apache2の停止を確認し

$ sudo ./certbot-auto --apache
WARNING: unable to check for updates.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter 'c' to cancel): {mydomain} #ドメインを入力
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for {mydomain}
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. {mydomain} (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://{mydomain}/.well-known/acme-challenge/xxxxxxxxxx-xxxxxxxx:
Timeout

IMPORTANT NOTES:

  • The following errors were reported by the server:

    Domain: {mydomain}
    Type: connection
    Detail: Fetching
    http://{mydomain}/.well-known/acme-challenge/xxxxxxxxxx-xxxxxxxx:
    Timeout

    To fix these errors, please make sure that your domain name was
    entered correctly and the DNS A/AAAA record(s) for that domain
    contain(s) the right IP address. Additionally, please check that
    your computer has a publicly routable IP address and that no
    firewalls are preventing the server from communicating with the
    client. If you're using the webroot plugin, you should also verify
    that you are serving files from the webroot path you provided.

何度やっても上記の通りTimeoutで成功しません。
Aレコードはmydns.jpにて設定してあり、何故このようなエラーになるのかがわかりません。

この後、同じネットワークからも外部からもアクセスできなくなりました。


/var/log/letsencrypt/letsencrypt.log
エラーログは長すぎて素人には意味不明

※ログの気になる部分
"validationRecord": [
{
"url": "http://{mydomain}/.well-known/acme-challenge/xxxxxxxxxx-xxxxxxxx",
"hostname": "{mydomain}",
"port": "80",
"addressesResolved": [
"xxx.xxx.xxx.xxx", #ipv4のグローバルIP
"XXXX:XXXX:XXXX:xxx::xxx" #ipv6のグローバルIP
],
"addressUsed": "XXXX:XXXX:XXXX:xxx::xxx" #なぜかipv6しか表示されていない??
}
]


一連の作業で下記のファイルが作成されていることを確認
/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key

また下記のconfファイルに上記2つの記述があることを確認
/etc/apache2/sites-available/default-ssl.conf

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key


/etc/apache2/ports.conf の内容

Listen 80

<IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule>

しかし、443ポートはListenされておりません。


長々と、醜い書き方で大変申し訳ないですが、何卒ご教示お願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

最近、新規に証明書を取得していないので、はっきりと覚えていないのですが、--apache を使用する場合は、apache が起動したままで稼働している必要があったと思います。


certbot-auto コマンドの実行前に apache を停止させるのであれば、以下のように --standalone を指定して、certbot-auto 内蔵のウェブサーバを使うようにした方が良いと思います。(こちらの方が検索で見つかる事例が多いです。)
この場合は、自分で apache の設定ファイルを書き換えて、SSL の設定をする必要があります。

sudo ./certbot-auto certonly --standalone

また、成功した場合、/etc/letsencrypt/live/{mydomain}/ に最新の証明書が置いてありますので、確認してください。


Apache の設定に関して、追記

最低限の追加項目は、SSL証明書関係のファイルパスの変更です。

SSLEngine on SSLCertificateFile /etc/letsencrypt/live/ドメイン名/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem

参考情報:

投稿2018/02/14 23:20

編集2018/02/15 00:55
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T-Moriyama

2018/02/15 00:41

ご回答ありがとうございます。 なるほど、apacheが起動していないとダメなのですね。 apacheの設定を書き換えるので終了すべきなのかと思い込んでおりました。 現状Webサーバーが機能していない状況なので、apache2とopensslを削除してから再チャレンジしてみます。 --standalone で実行した場合自分でSSLの設定をするとのことでしたが、 default-ssl.confに/etc/letsencrypt/live/{mydomain}/にある情報を記述するのでしょうか?
CHERRY

2018/02/15 00:54

apache 設定の変更に関して、回答の最後に追記しました。
T-Moriyama

2018/02/15 01:00 編集

ご回答の追記ありがとうございます。 教えていただいたリンクも大変参考になります。 もう一度チャレンジして確認してみます。
T-Moriyama

2018/02/15 07:26

アドバイスを頂いて、何度か試してみたのですが何度実行してもTimeoutでエラーになってしまいます。 sudo apt-get autoremove apache2 opensslで削除しインストールしなおしても同じ結果になってしまいます。
CHERRY

2018/02/15 07:51

Apacheが、稼働している状態で、外部のネットワークから、お使いのドメインへアクセス可能ですか?
T-Moriyama

2018/02/15 08:57

はい、外部のブラウザからhttp://{mydomain}/へ接続すると”It.works!”のページが表示されます。
guest

0

自己解決

DDNS側でAAAAレコードを削除したら解決しました。
ipv6は勉強不足なのでポートの開き方すらよくわかりませんでした。

投稿2018/02/16 07:36

編集2018/02/16 07:39
T-Moriyama

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問