1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python2.7 とPython3.6が同居しているAmazon Linux (≠Amazon Linux 2)環境でCertbot-autoを動かす

Posted at

想定読者

  • この記事を誰かが読むことはあまり想定していません。下記のような人が検索の末にたどり着いて、正しい情報源に近づくための道しるべになればいいかな、と思っています。
    • Linuxには詳しくない、Pythonもよくわからない、https接続できるサイトを安価に運営する必要からAWS(Amazon Linux)、Let's Encryptの組み合わせを使っている人
    • 見よう見まねでコマンドをコピペしているが、内容を理解できていない人
  • 私自身が↑こういう人なので、記事内容の正確さは保障できません。あらかじめお詫びしておきます。

Let's encryptからのメール

  • 2020年1月にLet's Encryptから「Update your client software to continue using Let's Encrypt」というタイトルのメールが着信した。
    • ACMEv1プロトコルを使って証明書を更新しているようだが、もうすぐ使えなくなるよ
    • ACMEv2に対応したクライアント( https://letsencrypt.org/docs/client-options/ )に切り替えないと証明書の発行ができなくなるよ

Let's Encryptとcertbotの関係、certbotとcertbot-autoの関係

  • Let's Encryptは「公共の利益のために運営されている、フリーで自動化されたオープンな認証局」でInternet Security Research Group(ISRG)がサービスを提供している(https://letsencrypt.org/ja/about/
  • Certbotクライアントは、電子フロンティア財団(EFF)が提供しているACMEクライアント。
  • Let's Encrypt/ISRGが提供しているわけではない。Let's EncryptのウェブサイトではCertbotを推奨しているが、他のクライアントソフトウェアも多数紹介されている。( https://letsencrypt.org/ja/docs/client-options/
  • Certbotの旧称はLet's Encryptクライアントで、EFFのリリース( https://www.eff.org/deeplinks/2016/05/announcing-certbot-new-tls-robot )を見る限り、フリーのSSL証明書発行を目指していたEFF/Mozilla/研究者たちによるプロジェクトから認証局としてのLet's Encryptが分岐した模様。
  • で、Certbot-autoはCertbotのラッパーで、Certbotの実行と依存関係管理を行う。←ここをよく理解せずに、かなり無理やり導入したCertbotを直接叩いて実行していた(=約2年間バージョンアップせず)のが、今回苦労した原因。

Certbot-auto最新版の取得、実行→エラー

  • Certbot-autoの導入手順については多数記事があるのでそちらを参照ください。私は「AWS EC2のAmazon LinuxでLet's Encryptのサーバ証明書を取得する( https://qiita.com/kanehara/items/a2c322acc3d2a96ff42d )」を参考にしました。
  • で、実行するとなんかエラーが出る。
    • Certbot-autoの実行時にAmazon Linuxをサポートしていないので云々と出るので、--debugオプションをつける
  • Pythonのバージョンが古いせいかと思い、Python3.6をインストールするも、Certbotの初回実行時にPython2.7の環境を構築しようとして失敗する。
  • /usr/bin/virtualenvが/usr/bin/virtualenv-2.7のシンボリックリンクになっていることが問題と判断。
    • Pythonは複数バージョンがインストールされていることを前提に、仮想環境を構築してバージョンを使い分けることが一般的、らしい。
    • 結果、仮想環境ソリューションもまた複数が乱立(と言ったらきっと怒られる)していて、このソリューションはこのバージョンでは使える使えない、であるとか、このソリューションは非推奨になって久しい、などの情報もまた多い。
    • そもそも「Amazon Linuxではpython2系を置いておかないとまずい」という記事を複数目にしたため、Python3.6を追加でインストールしている。
    • Amazon Linux 2であればこの問題が起きないのでは、と、1インスタンス立ち上げてみたのは秘密だ。
    • でもAmazon Linux 2でもCertbotを動かすのは一筋縄ではいかないらしい。

とりあえず解決(後で問題が起きるかも)

  • /usr/bin/virtualenvが/usr/bin/virtualenv-2.7のシンボリックリンクになっているのが問題なので
sudo yum install python36-virtualenv
sudo unlink /etc/alternatives/virtualenv
sudo ln -s /usr/bin/virtualenv-3.6 /etc/alternatives/virtualenv
sudo certbot-auto renew --debug
sudo service httpd restart

以上

  • 後で問題が起きたら更新します。
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?