HTTPSサーバーの構築方法


サイトがhttpsに変わるのは大勢の赴くところだ.しかし、国内では、推進の過程が海外よりずっと遅いのは明らかだ.
現段階では、自分のサイトをhttpsに変更した後、ページにhttp://のリンクや画像を引用した場合、ユーザーはブラウザで のようなものを見ることができ、サイト運営者にとって非常に冤罪と言える.多くのリンクはサードパーティ製なので、制御できません.
apiインタフェースクラスのサイトでは,混在の問題はないので,まずapiバックグラウンドインタフェース部分からhttpsを用いるべきである.(iOSはインタフェースアドレスがhttpsであることを強制しています)
大手プロバイダのSSL証明書は安くないし、大手企業にとっては大したことではないかもしれませんが、小さな会社や個人にとっては高いです.現在海外に登場する無料SSLサービス会社Let’s Encryptは、決して小さな会社や開発者の福音である.△現段階では天朝でも正常に使えるが、将来は分からない.天朝がある日世界のネットワークを自絶すれば、この証明書も閉鎖されるかもしれない.
ここではCentOS 7.0 7.1および6.8 + nginxのLet’s Encryptのインストールと使用に関する完全な手順.
 
let's encript証明書を申請するには、3つの方法があります.
  • certbotスクリプト
  • を通過
  • Letencriptをサポートする仮想ホストプロバイダ
  • を介して
  • 手動申請manual mode
  • 特別な場合はなくcertbotスクリプト方式が優先されます.
    letsencrypt証明書の有効期間は90日しかないので、長期使用が必要な場合は、失効前に延長申請が必要です.certbotスクリプトツールでは、延期申請のスクリプトをタイミングタスクに書き込んで自動的に完了することができ、非常に便利です.
    一、前提条件
  • はmydomain.com(国内ホストで使用する場合はICPで登録する必要がある)
  • のドメイン名を持っています.
  • ドメイン名サーバにAレコードを作成し、クラウドホストのパブリックネットワークIPアドレスを指します.例えばdemo.mydomain.comがxxx.xxx.xxx.xxxを指すIPアドレス
  • 新しく作成されたドメイン名の解析がパブリックネットワーク上で解析されるまで待つ必要があります.
  • 国内のドメイン名プロバイダはletsencryptのサポートが非常に悪いと言われていますが、実験の結果、少なくとも現段階でdnspodで解析したドメイン名はまだ問題にぶつかっていません.

  • 二、クラウドホストにnginxサーバーをインストールし、最も基本的な80ポートのngnixサイトを配置する
    たとえば、demo.mydomain.comが最も簡単なnginxサイトを迅速に構成すると仮定します.
  • nginxサーバ
    yum install -y nginx 
  • をインストールする
  • nginxサイト
    mkdir /opt/www/demo.mydomain.com -p
    chown nginx:nginx /opt/www/demo.mydomain.com/ -R
    vi /etc/nginx/conf.d/demo.mydomain.com.conf 
    を構成し、以下の内容をファイルにコピーする
    server { listen 80; server_name demo.mydomain.com; charset utf-8; root /opt/www/demo.mydomain.com; index index.html index.htm; access_log /var/log/nginx/demo.mydomain.com_access.log; error_log /var/log/nginx/demo.mydomain.com_error.log; } 
  • .
  • nginxサービス
    systemctl start nginx 
    を開始注意:CentOSサーバが80ポートおよび443ポートをオープンしていることを確認する
  • .
  • ブラウザでhttp://demo.mydomain.comへのアクセスを確認 ページがない場合は、通常403エラーが表示されるはずです.nginxサイトの構成が完了しました.

  • 三、certbotツールのインストール
    yum install -y epel-release
    yum install -y certbot 

    上記のcertbotのインストールに失敗しました.次の方法を使用します.成功したらスキップします.
    wget https://dl.eff.org/certbot-auto
    chmod a+x certbot-auto
    ./certbot-auto certonly --email [email protected] --agree-tos --webroot -w/home/wwwroot/cpvideo -d www.bad120.com
    次の第4条をスキップする
     
    四、certbotコマンドを使用して初めて証明書を申請する
    #     :certbot certonly --webroot -w [Web    ] -d [    ] -m [   email  ] --agree-tos
    certbot certonly --webroot -w /opt/www/demo.mydomain.com -d demo.mydomain.com -m [email protected] --agree-tos 

    注意:連絡先emailアドレスは実際に有効であることを記入し、letsencryptは証明書が期限切れになる前に予告された通知メールを送信します.申請が成功すると、次のCongratulations情報が表示されます.
    IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at
       /etc/letsencrypt/live/[xxx.xxx.xxx]/fullchain.pem. Your cert will
       expire on 2017-03-20. To obtain a new or tweaked version of this
       certificate in the future, simply run certbot again. To
       non-interactively renew *all* of your certificates, run "certbot
       renew"
     - If you like Certbot, please consider supporting our work by:
    
       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
       Donating to EFF:                    https://eff.org/donate-le 

    証明書の保存場所:
    /etc/letsencrypt/live/demo.mydomain.com/        cert.pem -> ../../archive/demo.mydomain.com/cert1.pem       chain.pem -> ../../archive/demo.mydomain.com/chain1.pem    , chain.pem + cert.pem fullchain.pem -> ../../archive/demo.mydomain.com/fullchain1.pem       privkey.pem -> ../../archive/demo.mydomain.com/privkey1.pem

    五、証明書の有効期限を表示するコマンド
    openssl x509 -noout -dates -in /etc/letsencrypt/live/[demo.mydomain.com]/cert.pem 

    表示されているのはグリニッジ時間で、現在のタイムゾーンをどのように表示するか分かりません.
    六、タイミングタスク自動更新証明書の設定
    letsencrypt証明書の有効期間は90日ですが、スクリプトで更新できます.
    #      certbot renew --dry-run #           ,        certbot renew --quiet 

    注意:証明書を更新するときは、Webサイトにアクセスできる必要があります.
    #     crontab    ,  :
    #   1 5         ,   nginx   
    00 05 01 * * /usr/bin/certbot renew --quiet && /bin/systemctl restart nginx 

    七、応用例:nginxを構成して証明書を使ってhttpsサイトを開通する
  • Perfect Forward Security(PFS)キー値
    mkdir /etc/ssl/private/ -p cd /etc/ssl/private/
    openssl dhparam 2048 -out dhparam.pem 
    を生成
  • Perfect Forward Security(PFS)とは何か、中国語で と訳されていますが、どちらかというとここ数年で提唱されたセキュリティ強化の技術です.このキー値がローカルで生成されていない場合は、まず生成命令を実行する必要があります.
  • 生成の過程はまだ時間がかかりますから、コーヒーを飲んで休みましょう.
  • はnginxサイト、例えば/etc/nginx/conf.d/demo.mydomain.com.confを構成し、サンプルの内容は以下の通りである:
    server { listen 80; server_name demo.mydomain.com; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443 ssl; server_name demo.mydomain.com; charset utf-8; root /opt/www/demo.mydomain.com; index index.html index.htm; access_log /var/log/nginx/demo.mydomain.com_access.log; error_log /var/log/nginx/demo.mydomain.com_error.log; # letsencrypt       ssl_certificate /etc/letsencrypt/live/demo.mydomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/demo.mydomain.com/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets on; ssl_dhparam /etc/ssl/private/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #        ssl_ciphers : https://wiki.mozilla.org/Security/Server_Side_TLS  ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK'; ssl_prefer_server_ciphers on; } 
  • .
  • ブラウザでhttp://demo.mydomain.comを開き、正常にhttps://demo.mydomain.comにジャンプすれば成功します.chromeブラウザであれば、アドレスバーで小さなロックのアイコンをクリックすると、証明書の詳細
  • を表示できます.
     
    pythonが間違っていたら使用できますhttps://linuxstory.org/deploy-lets-encrypt-ssl-certificate-with-certbot/このシナリオは、証明書の自動更新機能と同様に機能します.