자신의 네트워크 CA 인증서 구축

CA 인증서 학습 네트워크, 미래에 사용할 수있는 실행 계정 기록
나는 여기에서 사용 된 내부에 도메인 이름을, 같은 도메인 이름을 사용하여, 자신에게 네트워크를 구축 할 수 있습니다.

주 : 당시 3 단자는 인증서가 웹 서버 도메인 이름을 입력에 대한 정보뿐만 아니라 일관되게 국가, 지방, 도시와 조직 이름에서 작성되었다!

최종 테이블

터미널 이름 IP 주소 간략한 소개
루트 CA 10.35.176.1 센터 CA 인증서의 네트워크, 최종 신용 보증의 모든 인증서
아이 CA 10.35.176.8 터미널 요구. 하위 CA 인증서, 터미널 서버 SSL 인증서의 주요 임무는 데이터 서버에 발행 루트 CA에 도착하는이 끝이 없습니다.
웹 서버 10.35.176.6 (도메인 이름 : linzopi.vpn) 하위 CA 웹 서버 인증서를 받기 위해서는 최종 사용자 단말기로 데이터를 암호화하는 데 사용됩니다.
최종 사용자 단말기 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 형식으로 내보내기

리눅스와 윈도우 형식에서 인증서 형식은 필요가하는 방법을 생각할 수있는 당신과 함께 복사 창문 장비를 설치하려면 두 번 클릭하여 변환이, 브라운관 파일 완료, 변환 할 다릅니다.
특정 차이는이 참조
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策略生效

구글 크롬은 인증서가 "주체 대체 이름"이 매개 변수를 포함해야합니다 필요합니다. 이 매개 변수가 없으면, 크롬은 인식하지 못합니다.

[REQ] 단락 하단 = v3_req의 req_extentions 첨가 찾을

발견 [v3_req] 단락 추가 subjectaltname에 = @alt_names
단락을 추가
[alt_names]
DNS.1 = linzopi.vpn (웹 서버 도메인 이름, 신청자의 수정 도메인 이름 필요)
효과를 :

개인 키와 인증서 요청 파일

# 生成秘钥
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 파일을 찾을 수있는 문제 후 newcerts 디렉토리, 확산 하위 CA의 / etc / PKI / CA / 내부가 없습니다. 경우 그리고 "중간 인증 기관"의 Windows를 설치

웹 서버

키 및 인증서 생성 요청

도메인 이름을 입력하기 위해, 여기에 일반 이름을 참고, 브라우저는 안전하지 않은 것으로 간주 될 것입니다!

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

다시 웹 서버 ~ / 인증서 / 디렉토리로 전달 (필요한 데르 형식 플러스 -outform 데르 매개 변수가있는 경우 파일 확장자가 실제로 세트 CRT PEM 형식 일 때 발생하지만) linzopi.csr 파일을 가져옵니다.

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