StartSSL無料証明書( CJSHayward.com 、 JobhuntTracker.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
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/cjsh/fathers>
Options ExecCGI FollowSymLinks Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</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/"
<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
</Directory>
</ code>
</ VirtualHost>
<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]
</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でした。
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のアルカナのいくつかを通過するとコマンドライン引数。
クライアントを見つけました [〜#〜] 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サイトに詳細と解説があり、作成者とコミュニティが役立ちます。
私は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 -S
とApache2ctl configtest
を使用してすべてがチェックアウトされることを確認し、Apache2ctl graceful
でHTTPS仮想ホストをアクティブ化します。
証明書を定期的に更新することを忘れないでください。現在、Let'sEncrypt証明書は90日後に期限切れになります。 Debianパッケージには、/etc/cron.d/certbot
のcronジョブと/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を失敗したユニットとしてリストします。