Let's Encryptを使用してHTTPSを無料で追加する方法

2405 ワード

HTTPSは何が必要ですか
httpsはRSA非対称暗号化アルゴリズムに基づいて、クライアントは公開鍵を利用してデータ(正確にはセッションkey)を暗号化し、サービス側は対応する秘密鍵を利用して復号する.公開鍵の公開性により正確性が保証されないため、サードパーティの権威機関CAを導入してデジタル証明書を発行し、デジタル証明書にはサービス側の公開鍵が含まれ、秘密鍵とともにサービス側に保存され、クライアントはサービス側からデジタル証明書を取得し、そこから公開鍵を取り出す必要がある.しかし、CAがサイトにデジタル証明書を発行するのは通常有料であるため、HTTPSをサポートするサイトには、デジタル証明書、秘密鍵、moneyの3つのものが必要である.
Let's Encryptとは?
簡単に言えば、Let's Encryptは無料のCAで、背後にLinux財団やフェイスブックなどの有名な会社が支えています.そこで、上記のhttpsに必要なものは2つになりました.デジタル証明書、秘密鍵です.サービス側がこの2つのものをどのように配置し、私たちのサイトにアクセスさせるかを見てみましょう.大きな緑の枠も表示されます.
Linuxの下でNginxサービス側はHttpsを配置します
システムにpython 2がインストールされていることを確認します.7以上のバージョンは、Let's Encryptプログラムがpythonに基づいて作成されているためです.次にpipをインストールし、pipでvirtualenvをインストールします.
$ python get-pip.py $ pip install virtualenv
Let's Encrypt公式サイトのHow It Worksに従ってLet's Encryptパッケージのインストールを指導します.インストール中にエラーや警告が発生した場合、上記のpython環境の構成が正しくない可能性があります.pythonの構成が正しいことを優先する必要があります.公式ガイドには異なるウェブサーバ向けのpluginがありますが、ここではstandaloneモードをお勧めします.ウェブサーバタイプに関係なく、より一般的です.
$ git clone https://github.com/letsencrypt/letsencrypt $ cd letsencrypt $ ./letsencrypt-auto --help $ ./letsencrypt-auto certonly --standalone -d yuanwhy.com
デジタル証明書を生成する過程で、メールボックスの入力を要求し、ドメイン名が現在のマシンのipを指しているかどうかを確認します.実際には、ドメイン名の実際の所有者であるかどうかを検証することを目的としています.成功すると、Congratulationsが現れます!/etc/letsencryptディレクトリの下で一連のファイルを生成します.ここでは、デジタル証明書と秘密鍵ファイル、/etc/letsencrypt/archive/yuanwhyの2つに関心を持つ必要があります.com/ディレクトリの下、fullchain 1.pemはデジタル証明書ですprivkey 1.pemは秘密鍵ファイルであり、catコマンドでファイルの内容を表示することができ、標準的なBase 64符号化である.nginxのプロファイルを変更し、sslを有効にし、デジタル証明書と秘密鍵ファイルのアドレスを指定すればよい.
server {
  listen 443 ssl;
  server_name yuanwhy.com;

  ssl_certificate /etc/letsencrypt/archive/yuanwhy.com/fullchain1.pem;
  ssl_certificate_key /etc/letsencrypt/archive/yuanwhy.com/privkey1.pem;

  ssl_session_cache shared:SSL:100m;
  ssl_session_timeout 500m;

  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;

  location / {
    root /usr/share/nginx/yuanwhy.com/wordpress;
    index index.php;
  }

  location ~ \.php {
    root /usr/share/nginx/yuanwhy.com/wordpress;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}

httpプロトコルへのアクセスをhttp sに強制する場合は、nginx転送を構成します.
server {
  listen 80;
  server_name yuanwhy.com;
  return 301 https://$host$request_uri;
}