独自のネットワークCA証明書を作成します

ネットワークを学習CA証明書は、将来のために利用可能な実行しているアカウントを記録
しますが、同じドメイン名を使用して、自分でネットワークを構築することができ、私は本明細書中で使用されるドメイン名が内部です。

注:証明書は、Webサーバーのドメイン名を記入した情報に加えて、一貫性を保つために、国家、地方、都市と組織名で記入された時点での三端子!

エンドテーブル

端末名 IPアドレス 簡単な紹介
ルートCA 10.35.176.1 センターのCA証明書のネットワーク、最終的信用保証のすべての証明書
子CA 10.35.176.8 ルートCAにサブCA証明書を取得するには、端末のニーズは、ターミナルサーバーのSSL証明書の主な任務は、データ・サーバに発行される。これは、終了する必要はありません。
Webサーバ 10.35.176.6(ドメイン名:linzopi.vpn) サブCAのWebサーバー証明書を受け取るには、エンドユーザーの端末にデータを暗号化するために使用されます。
エンドユーザ端末 10.35.176.5 データの最終受信者は、デバイスは、データが実際のデータ・サーバによって送信されたことを確認するために、CA証明書の問い合わせに真です。

ルートCAの設定

ディレクトリ構造を作成します。

mkdir /etc/pki
mkdir /etc/pki/tls
mkdir /etc/pki/CA
mkdir /etc/pki/CA/private
mkdir /etc/pki/CA/newcerts
touch /etc/pki/CA/index.txt        #生成证书索引数据库文件
echo 01 > /etc/pki/CA/serial       #指定第一个颁发证书的序列号

書き込み設定ファイル

vim /usr/lib/ssl/openssl.cnf

どちらのCA_default段落を持って、内容は次のように読んで:

[ CA_default ]
dir             = /etc/pki/CA           # CA的默认工作目录
certs           = $dir/certs            # 认证证书的目录
crl_dir         = $dir/crl              # 证书吊销列表的路径
database        = $dir/index.txt        # 数据库的索引文件
new_certs_dir   = $dir/newcerts         # 新颁发证书的默认路径
certificate     = $dir/cacert.pem       # 此服务认证证书,如果此服务器为根CA那么这里为自颁发证书
serial          = $dir/serial           # 下一个证书的证书编号
crlnumber       = $dir/crlnumber        # 下一个吊销的证书编号
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# CA的私钥
RANDFILE        = $dir/private/.rand    # 随机数文件
x509_extensions = usr_cert              # The extentions to add to the cert
name_opt        = ca_default            # 命名方式,以ca_default定义为准
cert_opt        = ca_default            # 证书参数,以ca_default定义为准
default_days    = 365                   # 证书默认有效期
default_crl_days= 30                    # CRl的有效期
default_md      = sha256                # 加密算法
preserve        = no                    # keep passed DN ordering
policy          = policy_match          #policy_match策略生效

Usr_certどこかの段落が次のように読み取るために、そこにある、CAは、CAのうち子として証明可能ノードに署名しました。

[ usr_cert ]

# These extensions are added when 'ca' signs a request.

# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.

basicConstraints=CA:true,pathlen:3

生成されたCAルート鍵

# 这个根秘钥,需要保存在本机器,不可泄露.
# 参数分别是输出的路径(必须和上面配置文件一样)和秘钥位数
openssl genrsa -out /etc/pki/CA/private/cakey.pem 8192

ルートCA証明書の生成

ルートCAの自己署名証明書は、ルートCAは、誰もが彼を認証することはできません、あなたは自分自身だけが自分の自己署名証明書を生成する認証できる上位認証機関です。

証明書は、エンドユーザーの端末にインストールする必要があるので、エンドユーザと関連するサブ信託へのCAルート証明書

国の省や都市をここで、プロファイルを一致させる必要性

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem -subj /C=CN/ST=GD/O=LINZ/CN=RootCA
#  -new: 生成新证书签署请求
#  -x509: 专用于CA生成自签证书
#  -key: 生成请求时用到的私钥文件
#  -days n:证书的有效期限
#  -out /PATH/TO/SOMECERTFILE: 证书的保存路径

証明書が生成されている場合は、このコマンドを使用して、証明書情報を表示できます。

openssl x509 -noout -text -in /etc/pki/CA/cacert.pem

Windows形式へのエクスポート

証明書のLinuxとWindowsのフォーマットが異なるの下で形式、変換する必要があり、変換は、CRTファイル完了すると、コピーは、Windows用機器をインストールするには、ダブルクリックする方法を考えることができて。
特定の違い、この参照
Win10は、PEMをサポートしているようです証明書の形式は、インストールする接尾辞を変更します。
Windowsのインストールをインストールする必要があり、「信頼されたルート証明機関」に

openssl x509 -outform der -in /etc/pki/CA/cacert.pem -out /etc/pki/CA/cacert.crt

下位CAの設定

ディレクトリ構造を作成します。

mkdir /etc/pki
mkdir /etc/pki/tls
mkdir /etc/pki/tls/private
mkdir /etc/pki/CA
mkdir /etc/pki/CA/private
mkdir /etc/pki/CA/newcerts
touch /etc/pki/CA/index.txt        #生成证书索引数据库文件
echo 01 > /etc/pki/CA/serial       #指定第一个颁发证书的序列号
echo "unique_subject = no">/etc/pki/CA/index.txt.attr #允许签发多个名称属性一样的证书

書き込み設定ファイル

vim /usr/lib/ssl/openssl.cnf

どちらのCA_default段落を持って、内容は次のように読んで:

[ CA_default ]
dir             = /etc/pki/CA           # CA的默认工作目录
certs           = $dir/certs            # 认证证书的目录
crl_dir         = $dir/crl              # 证书吊销列表的路径
database        = $dir/index.txt        # 数据库的索引文件
new_certs_dir   = $dir/newcerts         # 新颁发证书的默认路径
certificate     = $dir/cacert.pem       # 此服务认证证书,如果此服务器为根CA那么这里为自颁发证书
serial          = $dir/serial           # 下一个证书的证书编号
crlnumber       = $dir/crlnumber        # 下一个吊销的证书编号
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# CA的私钥
RANDFILE        = $dir/private/.rand    # 随机数文件
x509_extensions = usr_cert              # The extentions to add to the cert
name_opt        = ca_default            # 命名方式,以ca_default定义为准
cert_opt        = ca_default            # 证书参数,以ca_default定义为准
default_days    = 365                   # 证书默认有效期
default_crl_days= 30                    # CRl的有效期
default_md      = sha256                # 加密算法
preserve        = no                    # keep passed DN ordering
policy          = policy_match          #policy_match策略生效

Google Chromeは、証明書が「サブジェクト代替名」は、このパラメータが含まれている必要があり必要です。このパラメータを指定しないと、クロムは認識されません。

[REQ]段落は、ボトム= v3_reqのreq_extentionsに追加されます見つけます

発見[v3_req]段落追加のsubjectAltName = @alt_names
段落を追加
[alt_names]
DNS.1 = linzopi.vpn(Webサーバーのドメイン名、申請者の変更するには、ドメイン名の必要性)
効果を:

プライベートキーと証明書要求ファイル

# 生成秘钥
openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
# 生成证书请求文件
openssl req -new -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/subca1.csr -subj /C=CN/ST=GD/O=LINZ/CN=SubCA1

サブCA証明書の取得

ルートに対して発行された上記のコマンドを実行した後に/ etc / PKI / CA / newcertsディレクトリをsubca1.csr CA

以下のコマンドは、端末のルートCAで実行されています

openssl ca -in /etc/pki/CA/newcerts/subca1.csr -cert /etc/pki/CA/cacert.pem  -keyfile /etc/pki/CA/private/cakey.pem  -out /etc/pki/CA/newcerts/cacert.pem -days 3650

あなたは、新しいcacert.pemのファイルを見つけるスプレッドサブCAの/ etc / PKI / CA /内部。できていない問題newcertsディレクトリがある場合との「中間証明機関」のWindowsをインストールするには

WEBサーバー

鍵と証明書の生成要求

ドメイン名を埋めるために、ここでは共通名に注意してください、ブラウザが安全ではないとみなされます!

mkdir ~/cert/
vim /usr/lib/ssl/openssl.cnf
openssl genrsa -out ~/cert/linzopi.key 2048
openssl req -new -key ~/cert/linzopi.key -out ~/cert/linzopi.csr -subj /C=CN/ST=GD/O=LINZ/CN=linzopi.vpn

サブCAの/ etc / PKI / CA / newcertsディレクトリへのCSRの広がり

子CA:

openssl ca -in /etc/pki/CA/newcerts/linzopi.csr -out /etc/pki/CA/newcerts/linzopi.crt -days 365  -extensions v3_req

(ファイル拡張子がセットCRT実際にPEMフォーマットであるときに生成が必要なDER形式ならば、プラス-outformデア・パラメータ)linzopi.csrファイルを取得し、バックWebサーバ〜/ CERT /ディレクトリに渡されます。

nginxの設定

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 1024;
        # multi_accept on;
}

http {
    server {
        listen 443;
        server_name linzopi.vpn;
        ssl on;
        ssl_certificate /root/cert/linzopi.crt;
        ssl_certificate_key  /root/cert/linzopi.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        location / {
                root html;
                index index.html;
        }
    }
}

最後のクライアント

おすすめ

転載: www.cnblogs.com/DragonStart/p/12235278.html