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;
}
}
}