openssl 구축 CA 인증

7383 단어 OpenSSLca
버 전: openssl - 1.0.1e / usr / local / nginx / democa / \ # ca 인증서 저장 위치 / usr / local / nginx / conf / ssl / \ # 서버 인증서 저장 위치 / home / samba / ca / \ # 발표 할 인증서 컴 파일 설치 저장
1
2
3
4
5
6
tar zxvf openssl-1.0.1e.tar.gzcd openssl-1.0.1e
./confg --prefix=/usr/local/ssl shared zlib-dynamic enable-camelliamake && make installecho "/usr/local/ssl/lib/" >/etc/ld.so.conf.d/usr_local_ssl_lib.conf/sbin/ldconfig

CA 구현 소개 1. openssl 명령 을 이용 하여 암호 화 된 CA 루트 비밀 키 (- keyout 지정) 를 만 든 다음 에 자신 (- x509 인자) 이 자신 에 게 서명 하고 서명 한 (- out 지정) 파일 은 CA 의 공개 키 로 CA 비밀 키 서명 을 검증 하 는 인증서 입 니 다.
openssl req -new -x509 -passout pass:ca_password -newkey rsa:2048 -days 7305 -keyout /usr/local/nginx/demoCA/private/cakey.pem -config /usr/local/ssl/openssl.cnf -out /usr/local/nginx/demoCA/cacert.pem -subj '/C=CN/ST=ZHEJIANG/L=HANGZHOU/O=CAID/OU=CAID CA Center/CN=CAID ROOT CA/[email protected]'

2. 서버 에 사용 할 CA 인증서 만 들 기 1) 서버 비밀 키 만 들 기 및 CA 루트 에 서명 을 요청 하 는 csr 파일 만 들 기
openssl req -new -passout pass:server_password -sha1 -newkey rsa:1024 -keyout /usr/local/nginx/demoCA/private/server.key -out /usr/local/nginx/demoCA/csr/client.csr -config /usr/local/ssl/openssl.cnf -subj '/C=CN/ST=ZHEJIANG/L=HANGZHOU/O=CAID/OU=CAID Web Services/CN=127.0.0.1/[email protected]'

2) CA 루트 는 자신의 비밀 키 로. csr 에 서명 합 니 다.
openssl ca -passin pass:ca_password -days 3650 -config /usr/local/ssl/openssl.cnf -policy policy_match -extensions ssl_server -out /usr/local/nginx/demoCA/certs/server.pem -infiles /usr/local/nginx/demoCA/csr/client.csr

이렇게 하면 서버 의 비밀 키 server. key 가 생 성 됩 니 다. CA 비밀 키 에 서명 한 공개 키 server. pem, CA 루트 의 공개 키 cacert. pem 은 apache 에서 SSL 설정 지정 파 라미 터 를 설정 하면 CA 로 SSL 연결 을 검증 할 수 있 습 니 다. / * - subj 내 파 라미 터 는 인증 연결 PHP 와 일치 하면 이 정 보 를 읽 을 수 있 습 니 다 * /
3. 클 라 이언 트 에 사용 할 인증서 만 들 기 1) server - 1
openssl req -new -passout pass:user_password -sha1 -newkey rsa:1024 -keyout /usr/local/nginx/demoCA/private/client_01001.key -out /usr/local/nginx/demoCA/csr/client.csr -config /usr/local/ssl/openssl.cnf -subj '/C=CN/ST=JIANGSU/L=CHANGZHOU/O=CAID/OU=CAID_01/CN=client_01001/[email protected]'

2) server - 2 와 expect - shell 스 크 립 트 sgin. exp 서명 을 통 해 상호작용 을 하지 않 습 니 다.
expect sgin.exp ca_password 365 policy_anything ssl_client client_01001

4. CA 의 공개 키 내 보 내기, 클 라 이언 트 의 비밀 키 & CA 가 서명 한 공개 키 1) CA 의 공개 키 내 보 내기
openssl x509 -in /usr/local/nginx/demoCA/cacert.pem -out /home/samba/ca/CA_Root.cer

2) 클 라 이언 트 의 비밀 키 내 보 내기 + CA 에 서 명 된 공개 키, 파일 은 pkcs 12 형식 으로 인 코딩 되 어 출력, importpassword 는 클 라 이언 트 가 파일 을 가 져 올 때의 암호 입 니 다.
openssl pkcs12 -passin pass:user_password -export -clcerts -in /usr/local/nginx/demoCA/certs/client_01001.pem -inkey /usr/local/nginx/demoCA/private/client_01001.key -passout pass:import_password -camellia256 -out /home/samba/ca/client_01001.pfx -name "luck_01001"

이렇게 클 라 이언 트 가 CA 를 가지 고 있 습 니 다.Root.cer,client_01001.pfx。CA 가 져 오기Root. cer 파일 로 CA 가 서명 한 사 이 트 를 검증 하고 client 가 져 오기01001. pfx 파일 사이트 에서 클 라 이언 트 신분 을 검증 할 수 있 습 니 다.
5. 인증서 취 소 는 특정한 클 라 이언 트 가 사이트 SSL 보 호 를 보 는 링크 를 취소 하려 면 인증 서 를 취소 하면 됩 니 다. 1) 서명 한 client 를 취소 합 니 다.01001.pem
openssl ca -passin pass:ca_password -keyfile /usr/local/nginx/demoCA/private/cakey.pem -cert /usr/local/nginx/demoCA/cacert.pem -revoke /usr/local/nginx/demoCA/certs/client_01001.pem -config /usr/local/ssl/openssl.cnf

2) 취소 인증서 목록 crl. pem 을 생 성하 여 서버 에서 링크 가 들 어 오 는 인증서 가 사용 가능 한 지 확인 합 니 다.
openssl ca -gencrl -keyfile /usr/local/nginx/demoCA/private/cakey.pem -cert /usr/local/nginx/demoCA/cacert.pem -out /usr/local/nginx/demoCA/crl.pem -config /usr/local/ssl/openssl.cnf -passin pass:ca_password

sgin.exp
#!/usr/bin/expectset passwd [lindex $argv 0]set days [lindex $argv 1]set policy [lindex $argv 2]set extension [lindex $argv 3]set name [lindex $argv 4]spawn /usr/local/ssl/bin/openssl ca -passin pass:$passwd -days $days -config /usr/local/ssl/openssl.cnf -policy $policy -extensions $extension -out /usr/local/nginx/demoCA/certs/$name.pem -infiles /usr/local/nginx/demoCA/csr/client.csr
expect {
        "y/n" { send "y\r";exp_continue }
        "y/n" { send "y\r" }}

ca-install.sh
#! /bin/bashrm -rf /usr/local/nginx/demoCA/ # ca      rm -rf /usr/local/nginx/conf/ssl/ #         mkdir -p /home/samba/ca/ #        mkdir -p /usr/local/nginx/conf/ssl/mkdir -p /usr/local/nginx/demoCA/{private,newcerts,crl,certs,csr,p12}touch /usr/local/nginx/demoCA/{serial,crlnumber,index.txt,private/.rand}#echo 0 > /usr/local/nginx/demoCA/index.txt echo 00 >/usr/local/nginx/demoCA/serialecho 00 >/usr/local/nginx/demoCA/crlnumber/usr/local/ssl/bin/openssl rand -out /usr/local/nginx/demoCA/private/.rand 1024#  CA  /usr/local/ssl/bin/openssl req -new -x509  -passout pass:ca_password -newkey rsa:2048 -keyout /usr/local/nginx/demoCA/private/cakey.pem -config /usr/local/ssl/openssl.cnf -out /usr/local/nginx/demoCA/cacert.pem -subj '/C=CN/ST=ZHEJIANG/L=HANGZHOU/O=CAID/OU=CAID CA Center/CN=CAID ROOT CA/[email protected]'#       /usr/local/ssl/bin/openssl req -new -passout pass:server_password -sha1 -newkey rsa:1024 -keyout /usr/local/nginx/demoCA/private/server.key -out /usr/local/nginx/demoCA/csr/client.csr -config /usr/local/ssl/openssl.cnf -subj '/C=CN/ST=ZHEJIANG/L=HANGZHOU/O=CAID/OU=CAID Web Services/CN=127.0.0.1/[email protected]'#  sgin.exp      /usr/local/bin/expect sgin.exp ca_password 3650 policy_match ssl_server server#   web    ,             mv {/usr/local/nginx/demoCA/certs/server.pem,/usr/local/nginx/demoCA/private/server.key} /usr/local/nginx/conf/ssl//usr/local/ssl/bin/openssl rsa -passin pass:server_password </usr/local/nginx/conf/ssl/server.key >/usr/local/nginx/conf/ssl/serverkey.pem#       /usr/local/ssl/bin/openssl req -new -passout pass:user_password -sha1 -newkey rsa:1024 -keyout /usr/local/nginx/demoCA/private/client_01001.key -out /usr/local/nginx/demoCA/csr/client.csr -config /usr/local/ssl/openssl.cnf -subj '/C=CN/ST=JIANGSU/L=CHANGZHOU/O=CAID/OU=CAID_01/OU=CAID_GROUP1/CN=client_01001/[email protected]'expect sgin.exp ca_password 365 policy_anything ssl_client client_01001#  CA  /usr/local/ssl/bin/openssl x509 -in /usr/local/nginx/demoCA/cacert.pem -out /home/samba/ca/CA_Root.cer#        + CA     /usr/local/ssl/bin/openssl pkcs12 -passin pass:user_password -export -clcerts -in /usr/local/nginx/demoCA/certs/client_01001.pem -inkey /usr/local/nginx/demoCA/private/client_01001.key -passout pass:import_password -camellia256 -out /home/samba/ca/client_01001.pfx -name "good luck 01001" #=============#       #/usr/local/ssl/bin/openssl ca -passin pass:ca_password -revoke /usr/local/nginx/demoCA/certs/client_01001.pem -config /usr/local/ssl/openssl.cnf/usr/local/ssl/bin/openssl ca -passin pass:ca_password -gencrl -config /usr/local/ssl/openssl.cnf -out /usr/local/nginx/demoCA/crl.pem#web         ln -s /usr/local/nginx/demoCA/crl.pem /usr/local/nginx/conf/ssl/crl.pem

좋은 웹페이지 즐겨찾기