nodejsはWeChatウィジェットローカルサーバを構成します.(一):OpenSSLは署名SSL証明書から生成します.


OpenSSLは署名SSL証明書から生成されます.
科学普及:TLS、SSL、HTTPS及び証明書
多くの人が3つ以上の名詞を聞いたことがあるかもしれませんが、それらは一体何の関連がありますか?
TLSはトランスポート層セキュリティプロトコルの略語であり、ネットワークベースの伝送に対する暗号化プロトコルであり、信頼された第三者公証に基づいて両方のアイデンティティ認証を行うことができる.TLSはTCPでもいいし、接続されていないUDPメッセージでも使えます.プロトコルは、アイデンティティ認証、アルゴリズム協議、鍵交換などの実現を規定しています.
SSLはTLSの前身であり、現在は更新されていません.
HTTPSは、TLS/SSLベースのセキュリティソケット上のアプリケーション層プロトコルであり、伝送層が暗号化されているほか、従来のHTTPプロトコルとほぼ一致している.
証明書はTLSプロトコルで認証するための仕組みであり、証明書所有者の公開鍵と第三者の証明書情報を含むデジタル署名形式のファイルである.
証明書は2種類に分類されます
自己署名証明書とCA証明書.一般的には署名証明書から身分認証を行うことができません.server端末が自署名証明書を使用する場合、client端は無条件で信頼できる証明書に設定されるか、または署名証明書から公開鍵と秘密鍵を信頼リストに追加する必要があります.しかし、これによりserverの秘密鍵漏洩リスクが増加した.
TLSはCAに基づくアイデンティティ認証の基本原理として、まず、証明書がオペレーティングシステムの信頼された証明書リストにあるか、またはユーザが「ルート証明書のインストール」などの方法でCAの公開鍵と秘密鍵を信頼リストに入れる必要があります.その後、CAは、検証された元の証明書に署名(秘密鍵暗号化)し、最終的な証明書を生成する.検証者は最終的な証明書を取得した後、CAcertに含まれる公開鍵を用いて解読し、被検証者の元の証明書を得る.
RSAの暗号化原理によれば、CAの公開鍵で復号に成功すれば、証明書は確かにCAの秘密鍵で暗号化されており、検証された方が信頼できると考えられてもよい.
WebsocketはHTML 5が提供し始めた1つのTCP接続上で全二重通信を行うプロトコルであり、HTTPプロトコルの効率低下の問題を解決し、サーバ資源と帯域幅を節約してリアルタイム通信を行うことができる.ここでnode.jsを使ってローカルサーバーを配置します.たくさんのwebsocketライブラリがあります.wsはその中の一つです.ファーストクラスと呼ばれています.wsの使い方は簡単です.直接見ます.https://github.com/websockets/wsいいです.ここで重要なのは、WeChatウィジェットに対して行われるssl証明書加入のwebsocketの実現である.生産環境はあなたにssl証明書を買うように勧めています.開発環境は自分でssl自署名証明書を作成して臨時に使ってもいいです.ここの開発環境はwin 7 X 64システムです.
一、OpenSSLの設置
ダウンロードリンク:http://slproweb.com/products/Win32OpenSSL.htmlここでは32ビットのバージョンをダウンロードしてください.windowはどのバージョンでも使えるからです.
!v 1.0.2のバージョンをダウンロードすることを強く提案しています.v 1.1.0と更新されたバージョンは絶対に使わないでください.このウィンドウがインストールされている場合は、コンピュータにVisual C++2008 Redistributablesがインストールされていないということです.インストールは自分でダウンロードしてください.
残りのインストールはすべて標準でOKです.D:OpenSSL-Win 32ディレクトリにインストールします.ここで証明書をDディスクのディレクトリに出力したいです.まず管理者権限でcmdを開きます.そしてDディスクのルートディレクトリに入ります.証明書を作成する前に環境変数を2つ設定する必要があります.
  • set RANDFILE=D:\.rnd
  • set OPESSL_CONF=D:OpenSSL-Win 32 binopenss.cfg
  • 第二の文はシステムに教えて、どこでopenssl.cfgファイルを探しますか?OpenSSLを実行できます.cmdにDを入力します.OpenSSL-Win 32 binopenssl.exeを実行します.以上の過程は図のようです.
    二、サーバ証明書を生成する
    第一歩:一つのサイトには、まず自分の秘密鍵が必要です.1024ビットのRSA鍵をサーバに作成し、ca.keyファイルに保存します.
    openssl genrsa -out ssl.key 1024
    パスワード保護を追加する場合は、以下のコマンドに変更します.
    openssl genrsa -des3 -out ssl.key 1024
    秘密鍵を利用して証明書を生成することができます.OpenSSL使用
    x 509コマンドで証明書を生成します.ここでは二つの概念を区別する必要があります.
    証明書と
    証明書要求(certificate sign request)
    証明書は署名またはCAから署名された証明書で、身分認証を行うために使用されます.
    証明書要求は署名の要求であり、秘密鍵を使って署名する必要がある.
    x 509コマンドは、証明書と証明書の要求を相互に変換することができますが、ここでは証明書から証明書を要求するまでのプロセスのみを実行します.
    第二のステップ:秘密鍵または暗号化された秘密鍵から「証明書要求」を生成することができる.
    openssl req -new -key ssl.key -out ssl.csr
    秘密鍵が暗号化されている場合は、パスワードを入力する必要があります.reqコマンドは、国、地域、組織などの情報の入力をコマンドラインで要求します.これらの情報は、証明書に添付されて接続先に表示されます.
    ステップ3:証明書要求を秘密鍵で署名して証明書crtを生成します.場面によって署名の仕方が少し違ってきます.
    (一)自己署名により、プライベート証明書を生成する
    自署名の原理は、秘密鍵で秘密鍵が生成した「証明書要求」に署名し、証明書ファイルを生成することである.この証明書の発行者は自分であるため、検証者は証明書の秘密鍵を持っていなければ、発行情報を検証することができないので、検証者はすべての証明書を信頼し、偽造のリスクに直面するか、検証者の秘密鍵(または暗号化された秘密鍵)を検証者の手に送信しなければならない.もちろん、署名も不要ではありません.例えば、内部通信が必要な2台のコンピュータは暗号化が必要で、第三者証明書を使いたくないので、両端に同じ秘密鍵と証明書を使って検証することができます.自署名の方法は以下の通りです.
    openssl x509 -req -in ssl.csr -signkey ssl.key -out ssl.crt
    (二)自己署名により、CA証明書を生成する
    CA証明書は特別な自己署名証明書で、他の証明書に署名するために使用できます.このように検証者がCA証明書を信頼することを選択すると、署名された他の証明書が信頼されます.検証者が検証を行う場合、CA証明書はオペレーティングシステムの信頼証明書ライブラリまたは指定された証明書リストから来ます.
    openssl x509 -req -in sign.csr -extensions v3_ca -signkey sign.key -out sign.crt
    (三)CA証明書を利用して他の証明書に署名する
    openssl x509 -req -in ssl.csr -extensions v3_usr -CA sign.crt -CAkey sign.key -CAcreateserial -out ssl.crt
    三、知識を広げる
    部下のCA鍵を授権コード署名に使用する場合(Microsoft’s signtoolツールを通じて)、鍵と証明書をPKCS 12ファイルに包装しなければなりません.
    pkcs 12-export-out ia.p 12-inkey ia.key-in.crt-chain-CAfile ca.rt
    前の節で、ルートCAとCAのCommon Nameを同じに設定したら、このステップでこのようなエラーが発生します.
    Errr self signed certift getting chain.error in pkcs 12
    Window上でsigntoolで実行可能なファイルに署名する方法:「信頼されたルート証明書発行機構」記憶エリアにia.p 12ファイルをインストールし(例えば、ダブルクリック)、そしてsigntool/wizardで署名します.
    上で作成した証明書(.crtファイル)をダブルクリックして表示してインストールしてもいいです.
    QQ群交流を追加することを歓迎します.1462960またはリンクをクリックしてQQ群に参加して話をします.https://jq.qq.com/?_wv=1027&k…