web-dev-qa-db-ja.com

Let's Encrypt(letsencrypt.org)を無料のSSL証明書プロバイダーとして使用するにはどうすればよいですか?

StartSSL無料証明書( CJSHayward.comJobhuntTracker.com )で実行されているサイトがいくつかありますが、FirefoxはStartSSLを拒否し、サーバーがそうではないことを示すエラーページを表示します証明書チェーンのために適切に構成されている(IIRC)。私は助けを求め、VirtualHost(要求に応じて利用可能)が証明書チェーン用であり、中間証明書が正しくインストールされていることを確認しました。 Chrome、Safari、Edge、またはOperaで認識しているエラーなしでサイトが表示されます。

いくつか検索した後、 Let's Encrypt! は魅力的な製品のように見えましたが、やがて(AFAICT)/ etc/Apache2/sites-enabledの下の各ドメインの秘密鍵と証明書を手に入れました。もちろん、私のものではなくなったドメイン。試運転をして、HTTPでのみ利用できるようになったサイトへのHTTPS接続を作成すると思いました: JSH.name 。 「Let'sEncrypt!」を移動しました。私のSSLディレクトリに証明書と秘密鍵を追加しました:

<VirtualHost *:443>
        ServerAdmin [email protected]
        DocumentRoot /home/jonathan/stornge
        SSLEngine On
        SSLCertificateFile /etc/Apache2/ssl/0000_csr-letsencrypt.pem
        SSLCertificateKeyFile /etc/Apache2/ssl/0000_key-letsencrypt.pem
        ServerName jsh.name
        ServerAlias www.jsh.name
        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
        CustomLog /home/jonathan/logs/stornge.com combined
        <Directory /home/jonathan/stornge/>
            Options ExecCGI Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>
</VirtualHost>

次に、再起動して自分の作業を確認しましたが、HTTPまたはHTTPSのリクエストはすべてハングしました。これには、StartSSL証明書を使用したHTTPS上の2つのドメインと、HTTPとHTTPSの両方を介してアクセスされるHTTPSで新たに利用可能になるはずのドメインが含まれていました。私はVirtualHostをコメントアウトし、Apacheをバウンスしましたが、古い機能はすべて正常に機能していました。

Let's "Encrypt!"を使用したことがありますか正しく?既存のSSL構成には、拡張子が.keyの秘密鍵、証明書の拡張子が.crt、拡張子が.pemの証明書チェーンファイルがあるため、少し疑わしいです。

SSLディレクトリを確認し、0000_csr.letsencrypt.pemがモード644であることがわかった後、再試行しました。そのディレクトリ内のすべてのファイルをモード600に変更しました。少し前に試したところ、古い動作が繰り返されました。ウェブサイトはすべてのリクエストでハングし、さらにapachectl restartは、httpdが実行されておらず、コンピューターがそれを開始しようとしているというステートメントを取得します(正確な表現を忘れています)。

「Let'sEncrypt」またはFirefoxを排除していない他のツールの無料証明書を取得するにはどうすればよいですか?

apachectl -v与える:

Server version: Apache/2.4.10 (Debian)
Server built:   Nov 28 2015 14:05:48

A uname -a与える:

Linux www 4.4.0-x86_64-linode63 #2 SMP Tue Jan 19 12:43:53 EST 2016 x86_64 GNU/Linux

-更新-

コンテンツが削除されました。0000_key-letsencrypt.pemは次の境界で囲まれています。

-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----

ディレクトリ階層を見つけると、次のようになります。

root @ www:/ etc/letsencrypt#find `pwd` -print 
/etc/letsencrypt
/etc/letsencrypt/keys
/etc/letsencrypt/keys/0000_key-letsencrypt .pem 
/etc/letsencrypt/accounts 
/etc/letsencrypt/accounts/acme-v01.api.letsencrypt.org 
/etc/letsencrypt/accounts/acme-v01。 api.letsencrypt.org/directory
/etc/letsencrypt/accounts/acme-v01.api.letsencrypt.org/directory/1ef8dc9b994b9b68a4e9c7cedd003be3
/etc/letsencrypt/accounts/acme-v01.api。 Letsencrypt.org/directory/1ef8dc9b994b9b68a4e9c7cedd003be3/private_key.json 
/etc/letsencrypt/accounts/acme-v01.api.letsencrypt.org/directory/1ef8dc9b994b9b68a4e9c7cedd003be3/meta.json [アカウント/acme-v01.api.letsencrypt.org/directory/1ef8dc9b994b9b68a4e9c7cedd003be3/regr.json
/etc/letsencrypt/renewal
/etc/letsencrypt/options-ssl-Apache.conf
/etc/letsencrypt/csr 
/etc/letsencrypt/csr/0000_csr-letsencrypt.pem

ディレクトリ/ home/jonathan/storngeとその内容は、世界中で読み取り可能で実行可能であり、違いが生じます。

- 更新 -

ここに実質的な何かを追加します:

http://OrthodoxChurchFathers.com Apache confファイルには2つのVirtualHostがあり、1つはサービスを提供します http://OrthodoxChurchFathers.com もう1つはリダイレクトします http: //www.OrthodoxChurchFathers.com リクエスト http://OrthodoxChurchFathers.com 。両方のVirtualHostを格納する.confファイルは次のとおりです。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName orthodoxchurchfathers.com
    #ServerAlias www.orthodoxchurchfathers.com fathers.jonathanscorner.com

DocumentRoot /home/cjsh/fathers/document_root
&lt;Directory />
    Options FollowSymLinks
    AllowOverride None
&lt;/Directory>
&lt;Directory /home/cjsh/fathers>
    Options ExecCGI FollowSymLinks Indexes MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
&lt;/Directory>

DirectoryIndex index.cgi index.html

ErrorLog ${Apache_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${Apache_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
&lt;Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
&lt;/Directory>
</ code>

</ VirtualHost>
&lt;VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.orthodoxchurchfathers.com
ServerAlias fathers.jonathanscorner.com
DocumentRoot /home/cjsh/oldmirror
RewriteEngine On
RewriteRule ^(.*)$ http://orthodoxchurchfathers.com$1 [R=301,L]
&lt;/VirtualHost></pre></code>

それを実行してorthodoxchurchfathers.comを単独でリクエストしようとすると、次のようになります。 ┌────────────────── ─────────────────────────────────────────────────── ──┐ │サーバー名またはアドレスが│ │orthodoxchurchfathers.comの仮想ホストが見つかりませんでした。 │ │どの仮想ホストを選択しますか? │ │(注:複数のvhostを持つconfファイルはまだサポートされていません)│ │┌─────────────────────── ────────────────────────────────────────────┐│ ││1008-stornge.conf|複数の名前| ││ ││2014-paraskeva.conf| paraskeva.jonathansco | ││ ││3036-unixytalk.conf| unixtalk.jsh.name | ││ ││4038-proxy.conf|複数の名前| ││ ││5027-anna.conf|複数の名前| ││ ││6044-jobhunt-tracker.creation.c|複数の名前| ││ ││7049-jsh.conf|複数の名前| ││ ││8001-steampunk.conf| | ││ ││9006-blajeny.conf|複数の名前| ││ ││10032-videos.conf|複数の名前| d││ │└────↓(+)───────────────────────────────── ──────────────────30%─────┘│ ├───────────────── ─────────────────────────────────────────────────── ───┤ ││ └───────────────────────────────── ─────────────────────────────────────┘

私が使用したコマンドは./letsencrypt-auto--debugcertonlyでした。

5

CentOSでLet'sEncrypt SSL証明書を実行するための2つのハウツーを作成しました: 初期設定cronning

そして、私のドメインごと(私はz-<[sub-]domain-tld>.confのファイル命名規則を使用します)Apache構成ファイルは次のようになります。

<VirtualHost *:80>
ServerName domain.tld
Redirect permanent / https://domain.tld/
</VirtualHost>

<VirtualHost *:443>
    SSLCertificateFile /etc/letsencrypt/live/domain.tld/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/domain.tld/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/domain.tld/fullchain.pem
    DocumentRoot /var/www/domain
    ServerName domain.tld
    ErrorLog logs/domain-error_log
    CustomLog logs/domain-access_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    ServerAdmin [email protected]

    SSLEngine on

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

    <Directory "/var/www/domain">
         Options All +Indexes +FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
    </Directory>

</VirtualHost>

そして私のssl.confは次のようになります:

#SSL options for all sites
Listen 443
SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
Mutex sysvsem default
SSLRandomSeed startup file:/dev/urandom  1024
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
SSLCompression          off
SSLHonorCipherOrder     on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

Let's Encryptを使用してSSL証明書を取得する(そしてサイトを SSL Labs から「A」評価に上げる)のは非常に簡単です-Apache構成とLEのアルカナのいくつかを通過するとコマンドライン引数。

3
warren

クライアントを見つけました [〜#〜] acme [〜#〜] うまく機能し、セットアップと実行が簡単で、定期的に更新され、更新も簡単で、非常にうまく機能しますAmazonLinuxで。私はあなたが見つけることができるそれについてのチュートリアルを書きました ここ

ACMEをダウンロードして設定することから始めましょう

https://github.com/hlandau/acme.git
cp ./acmetool /usr/local/bin
/usr/local/bin/acmetool quickstart

証明書をリクエストする

./acmetool want example.com www.example.com

これが私がチャレンジ用のディレクトリを設定する方法です-これはLet'sEncryptが検証するためにサーバーに接続する場所です

mkdir -p /var/www/acme-challenge/.well-known/acme-challenge
chmod -R user:www-data /var/www/acme-challenge/*
find /var/www/acme-challenge/ -type d -exec chmod 755 {} \;
vi /var/www/acme-challenge/.well-known/acme-challenge/text.html   (add "hello world!" or similar)

上記のリンクされたWebサイトに詳細と解説があり、作成者とコミュニティが役立ちます。

1
Tim

私はEFFの Certbot をWebルートモードで使用して成功しました(証明書の更新中にWebサーバーを一時的に停止する自動化されたプロセスのアイデアが私を怖がらせるため)。

まず、Certbotをインストールします。 Debian Jessie(これを書いている時点で最新)を使用している場合は、最初にjessie-backportsリポジトリを追加してから、

$ Sudo apt-get install python-certbot-Apache -t jessie-backports

これにより、少数のパッケージとcertbot自体が導入されます。

次に、 webroot モードで証明書を作成するには、次のように実行します。

$ Sudo certbot certonly --webroot -w /srv/www/www.example.net/htdocs -d www.example.net

デフォルト(現在は2048ビット)以外のモジュラスサイズが必要な場合は、オプションで--register-unsafely-without-email--rsa-key-size Xを追加できます。 -d fqdn.example.comは、-wと同様に、任意の回数繰り返すことができます。各-wは、ディレクトリから提供される新しいドメインのセットを開始します。ドメインの名前は-dです。 Let's Encryptはワイルドカード証明書を発行せず(これはFAQに記載されています)、明らかに、Punycodeドメイン名の証明書も発行しません。

certbotを必要に応じて実行するユーザーは、少なくともデフォルトで、/etc/letsencryptの下のいくつかの場所へのアクセスを書き込みます。 rootとして実行するのがおそらく最も簡単です。指定されたWebルートディレクトリ(.well-known/acme-challenge)の下の-wの下にファイルを作成し、リモートシステム アクセス可能であることを確認します 指定されたドメイン名HTTPを介して、すべてがチェックアウトされると、/etc/letsencrypt/archive/www.example.netに一連のPEMファイルと、/etc/letsencrypt/live/www.example.netに対応するシンボリックリンクのセットが作成され、フレンドリーな成功メッセージ。

すべてがチェックアウトされた場合、あとは、問題のドメインのHTTPS用に/etc/letsencrypt/liveのホスト名サブディレクトリにある証明書を使用するようにWebサーバーを設定する必要があります。 Apacheのこれの絶対的な最小値は、次のようなものです。

<VirtualHost *:443>
        ServerName www.example.net
        SSLEngine on
        SSLCertificateKeyFile /etc/letsencrypt/live/www.example.net/privkey.pem
        SSLCertificateFile /etc/letsencrypt/live/www.example.net/cert.pem
        SSLCertificateChainFile /etc/letsencrypt/live/www.example.net/chain.pem
</VirtualHost>

必要に応じて他のディレクティブを追加し、Apache2ctl -SApache2ctl configtestを使用してすべてがチェックアウトされることを確認し、Apache2ctl gracefulでHTTPS仮想ホストをアクティブ化します。

証明書を定期的に更新することを忘れないでください。現在、Let'sEncrypt証明書は90日後に期限切れになります。 Debianパッケージには、/etc/cron.d/certbotのc​​ronジョブと/lib/systemd/system/certbot.serviceのsystemdサービスが付属しており、これを処理します。または、certbot renewを手動で実行することもできます。新しく発行された証明書の使用を開始するには、Apache2ctl gracefulを忘れないでください。これを自動的に行うために、cronジョブまたはsystemdサービスを調整することをお勧めします。更新された証明書をDebianJessieのApacheに自動的にロードするには、/lib/systemd/system/certbot.serviceを更新して[Service]セクションに追加することを検討してください(注:順序は重要です)。

ExecStartPost=/usr/sbin/Apache2ctl configtest
ExecStartPost=/usr/sbin/Apache2ctl graceful

そうすることで、更新された証明書ifが自動的にロードされます。Apache構成ファイルはconfigtestを渡し、configtestまたはgracefulが失敗した場合はCertbotを失敗したユニットとしてリストします。

0
a CVn