Let's Encrypt Automaticallyを使用してリバースプロキシApache(Debian 8)を構成する

多くの場合、組織には多くのサイトがあり、IPアドレスはほとんどないため、リバースプロキシを使用したソリューションが必要です。 私の目的のために、Microsoft TMGは常に以前から機能していましたが、欠点と利点があります。 主な短所の1つは、公開されたリソースの証明書をTMGにアップロードする必要があることです。証明書は90日ごとに更新されるため、Let's Encryptではかなり不便です。



解決策が見つかりました:Apacheでリバースプロキシを上げ、Let's Encryptが自動的に証明書を発行するようにします。 そして、ポートをhttpからhttpsにリダイレクトしながら、静かにファイアウォールで公開します。



私たちは、純粋なDebian GNU / Linux 8(jessie)を持っていることを基礎としています。 カットの下の詳細。



さあ、行きましょう。



aptitude install -y build-essential aptitude install -y libapache2-mod-proxy-html libxml2-dev aptitude install -y apache2
      
      





次に、次のモジュールをアクティブにします。



 a2enmod proxy a2enmod proxy_http a2enmod proxy_ajp a2enmod rewrite a2enmod deflate a2enmod headers a2enmod proxy_balancer a2enmod proxy_html a2enmod proxy_ftp a2enmod proxy_connect a2enmod ssl
      
      





Apacheを再起動します。



 service apache2 restart
      
      





ここでは、最初の失敗が待っています。Apachには適切な操作のためのmod_xml2encモジュールがありませんが、! このモジュールはJessieでは機能しません。次のコマンドを順番に作成する必要があります。



 aptitude install apache2-prefork-dev libxml2 libxml2-dev apache2-dev mkdir ~/modbuild/ && cd ~/modbuild/ wget http://apache.webthing.com/svn/apache/filters/mod_xml2enc.c wget http://apache.webthing.com/svn/apache/filters/mod_xml2enc.h apxs2 -aic -I/usr/include/libxml2 ./mod_xml2enc.c cd ~ rm -rfd ~/modbuild/ service apache2 restart
      
      





その後、すべてが順調になり、モジュールが完成しました。 さらに進む)



HTTPSサイトを公開したいので、Let's Encryptをインストールするまで、サイトの自己署名証明書を作成し、次のコマンドを入力する必要があります。



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





構成ファイルを作成し、わかりやすい名前で名前を付ける必要があります。



 touch /etc/apache2/sites-available/sambi4.conf
      
      





そして、このようなファイルを与えます:



 <VirtualHost *:80> ServerName sambi4.ru Redirect permanent / https://sambi4.ru/ #    https </VirtualHost> <VirtualHost *:443> SSLEngine On SSLProxyEngine On ProxyRequests Off ProxyPreserveHost On ProxyVia full SSLCertificateFile /etc/apache2/ssl/server.crt #      SSLCertificateKeyFile /etc/apache2/ssl/server.key #       ProxyHTMLInterp On ProxyHTMLExtended On <proxy *> Order deny,allow Allow from all </proxy> ProxyPass / https://192.168.199.78/ #IP   . ProxyPassReverse / https://192.168.199.78/ #IP   . ServerName sambi4.ru ServerAdmin sambi4@sambi4.ru #    email  DocumentRoot "/var/www/html" #       ,        . </VirtualHost>
      
      





作成が完了したら、サイトを含めることを忘れないでください。



 a2ensite /etc/apache2/sites-available/sambi4.conf
      
      





Apacheを再起動します。



 service apache2 restart
      
      





すべての手順が完了したら、Apache2でリバースプロキシを構成しました。Let's Encryptのセットアップを開始できます。



すべての無料の証明書のうち、Let's Encryptのみが存続しましたが、その特徴は、証明書が3か月間発行されることです。



証明書を入れて、認証期間の終わりに自動的に発行する必要があります。



 echo 'deb http://ftp.debian.org/debian jessie-backports main' | tee /etc/apt/sources.list.d/backports.list
      
      





後:



 aptitude update
      
      





それでは、Let's Encryptを設定しましょう。



 aptitude install -y python-certbot-apache -t jessie-backports
      
      





インストールプロセスを待って、証明書の発行を試みます。



 certbot --apache
      
      





そして、ここで失敗が待っています:

エラー:letsencrypt_apache.configurator:サーバー名またはエイリアスの仮想ホストが存在しません:sambi4.ru。 仮想ホストが選択されていません。 Apache構成でサーバー名を指定してください


これは、リポジトリに(0.10.2を書いている時点で)古いバージョンがまだあり、エラーが観察されるという事実によるものです。 つまり、Pythonスクリプトのエラーです。 解決策は、いつものように簡単です。

certbotの最新バージョンをダウンロードします。



 git clone https://github.com/certbot/certbot.git
      
      





その後、パスに沿って進みます。



  cd /usr/lib/python2.7/dist-packages
      
      





フォルダーを削除(またはより良いバックアップ):



アクメ

certbot

certbot_apache

そして、新しいリリースからファイルをコピーします。



 cp /root/certbot/certbot /usr/lib/python2.7/dist-packages/ cp /root/certbot/acme/acme/ /usr/lib/python2.7/dist-packages/ cp /root/certbot/certbot-apache/certbot_apache/ /usr/lib/python2.7/dist-packages/
      
      





これで、証明書の発行プロセスを静かに開始できます。



 certbot --apache
      
      





質問やすべてに答えます!



おめでとうございます、証明書を発行しました。次に、証明書自動更新スクリプトを追加する必要があります。 暗号化して証明書を発行する期間はわずか90日間です(これを覚えています)。



すべてがシンプルです。 cronに次の行を追加する必要があります。



 30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
      
      





つまり 入力します:



 crontab -e
      
      





そして、私たちの行を追加してください(次の用語に行くようにしてください、そうでなければ保存されません)



そして、すべて、他のリソースで無限の時間を繰り返します。



頑張って、管理者!



All Articles