Nginx-PHP 证书应用步骤

来源:互联网 发布:崩坏学园2淘宝初始号 编辑:程序博客网 时间:2024/05/16 06:21

目录:

1、设置环境

2、建立CA

3、建立Web Server证书

4、建立用戶证书

5、配置NGINX 服务器

6、其它

 

1、设置环境

 

mkdir CA
cd CA
mkdir -p {private,newcerts}
touch index.txt
echo 01 > serial

 

配置文件: /etc/pki/tls/openssl.cnf

[ policy_match ]
countryName     = optional
stateOrProvinceName = optional
organizationName    = optional
organizationalUnitName  = optional
commonName      = supplied
emailAddress        = optional

 

其他配置详解见参考:http://www.openssl.org/docs/apps/x509v3_config.html

 

2、建立CA
---------------------------------------------------
STEP 1:生成RSA密钥
-----------------------
openssl genrsa -out ca.key 1024  

这个命令会生成一个1024位的密钥,如果需要在KEY使用時進行加密,可加上des3參數

openssl genrsa -des3 -out ca.key 1024


STEP 2:ca.csr:CA請求文件  【内部发行CA证书可省略此步骤】
-----------------------

openssl req -new -key ca.key -out ca.csr

 

这个命令将会生成一个证书请求,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书,内部应用一般用STEP 3的方式直接产生。



STEP 3:ca.crt:認證中心證書
-----------------------

openssl req -new -x509 -keyout ca.key -out ca.crt -days 3650

这个是CA证书,天数一般会设大一些




3、建立Web Server证书
---------------------------------------------------
STEP 1:、創建key
openssl genrsa -out server.key  1024
STEP 2:证书请求
openssl req -new -key server.key -out server.csr

Common Name: 网站域名  (这个一定要填对,不然在IE还会有安全提示
STEP 3:用CA证书进行签名
openssl ca -in server.csr -cert ca.crt -keyfile ca.key -out server.crt
STEP 4:、合并证书文件(crt)和私钥文件(key),产生证书链
cat server.crt server.key > server.pem

 

 

4、從【認證中心】發行所有WEB用戶的個人證書
---------------------------------------------------
STEP 1:、創建KEY
openssl genrsa -out user.key 1024
STEP 2:、req
openssl req -new -key user.key -out user.csr
Common Name: benero
STEP 3:、crt文件
openssl ca -in user.csr -cert ca.crt -keyfile ca.key -out benero.crt

STEP 4:、證書
openssl pkcs12 -export -clcerts -in user.crt -inkey user.key -out user.p12

 

 

5、配置NGINX服务器

 

STEP 1:、nginx ssl配置
server
{
        include  http.types;
        listen 443;
        server_name 域名;
        ssl on;
        ssl_certificate /etc/pki/CA/private/server.pem;
        ssl_certificate_key /etc/pki/CA/private/server.key;
        ssl_session_timeout 5m;
        ssl_protocols SSLv2 SSLv3 TLSv1;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;
        ssl_verify_client on;
        ssl_client_certificate /etc/pki/CA/private/ca.crt;
        ssl_verify_depth 1;

        index index.php index.shtml index.htm index.html;
        root  /var/www/html/;
        access_log  /var/log/www/access.log  access;
}

STEP 2: 添加ssl變量
/usr/local/nginx/conf/fcgi.conf

fastcgi_param  SSL_VERIFIED         $ssl_client_verify;
fastcgi_param  SSL_DN               $ssl_client_s_dn;
fastcgi_param  SSL_PROTOCOL         $ssl_protocol;
fastcgi_param  SSL_CIPHER           $ssl_cipher;

上面的變量設置后,在PHP利用 $_SERVER 可以找到證書相關信息

STEP 3:nginx 重啟
/usr/local/nginx/sbin/nginx -s  reload

 

6、其它

 -- 利用JAVASCRIPT将CA证书添加到【IE受信任的根证书颁发机构】

 

-- 发行WEB SERVER的脚本

 

 

 

 

參考網站:

Nginx模块参考手册中文版

http://www.queryer.cn/DOC/nginxCHS/index.html

 

Nginx之https 客户端ssl验证(双向认证)的配置&&用php实现证书登陆

http://blog.cheemer.org/?p=151

 

原创粉丝点击