Chinaunix首页 | 论坛 | 博客
  • 博客访问: 609794
  • 博文数量: 142
  • 博客积分: 116
  • 博客等级: 入伍新兵
  • 技术积分: 1445
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-28 08:37
文章分类

全部博文(142)

文章存档

2017年(7)

2016年(57)

2015年(48)

2014年(30)

我的朋友

分类: 网络与安全

2014-05-16 18:21:52

根证书            生成服务器证书,客户端证书的基础。自签名。
服务器证书     由根证书签发。配置在服务器上。
客户端证书     由根证书签发。配置在服务器上,并发送给客户,让客户安装在浏览器里。

要注意,
1. 服务器证书的cn要和servername一致,否则启动httpd时有警告。
2. 浏览器安装客户端证书时,需要用pkcs12转换成pfx格式,否则可以安装但无效。
3. 把根证书安装到浏览器的受信CA中,访问服务器时就不会出警告了。


环境: CentOS6_x64     openssl 1.0.1    apache2.2
  • 准备
echo -n > /etc/pki/CA/index.txt
echo '00' > /etc/pki/CA/serial
注意,index.txt需要初始化为0字节,连换行也不能有。

########## 1 根证书
修改/etc/pki/tls/openssl.cnf,放开nsCertType= server的注释。
[ usr_cert ]
nsCertType = server

cd /etc/pki/CA
# 生成密钥
openssl genrsa -out private/myCA.key 1024
# 生成自签名证书
openssl req -new -x509 -key private/myCA.key -out certs/myCA.crt
# 把这个crt导入客户端浏览器,就不会显示证书警告了。

########## 2 服务器证书
cd /etc/pki/tls
openssl genrsa -out private/sv.key 1024
# 生成请求
openssl req -new -key private/sv.key -out private/sv.csr
# 使用根证书签名
openssl ca -in private/sv.csr -keyfile ../CA/private/myCA.key -cert ../CA/certs/myCA.crt -out certs/sv.crt

有时,签发多个证书是,由于common name等信息重复导致签名失败,
可以初始化index.txt和serial。
openssl ca -in private/sv.csr -keyfile private/sy.key -cert certs/sy.crt -out certs/sv.crt -policy policy_anything -extensions server

  1. [ server ]
  2. basicConstraints=CA:FALSE
  3. nsCertType = server
  4. nsComment = "OpenSSL Generated Server Certificate"
  5. subjectKeyIdentifier=hash
  6. authorityKeyIdentifier=keyid,issuer:always


########## 3 客户端证书
修改/etc/pki/tls/openssl.cnf,注释掉nsCertType= server,去掉的nsCertType = client, email注释。
[ usr_cert ]
nsCertType = client, email

cd /etc/pki/tls
openssl genrsa -out private/clnt1.key 1024
openssl req -new -key private/clnt1.key -out private/clnt1.csr
openssl ca -in private/clnt1.csr -keyfile ../CA/private/myCA.key -cert ../CA/certs/myCA.crt -out certs/clnt1.crt

# 个人证书需要转成pfx格式
openssl pkcs12 -export -in certs/clnt1.crt -out certs/clnt1.pfx -inkey private/clnt1.key

------------------------------------------
  • apache 配置:
SSLCertificateFile /etc/pki/tls/certs/sv.crt
SSLCertificateKeyFile /etc/pki/tls/private/sv.key
SSLCertificateChainFile /etc/pki/tls/certs/chain.crt      <--这个从哪儿来的?
SSLCACertificateFile /etc/pki/tls/certs/myCA.crt

    SSLVerifyClient require
    SSLVerifyDepth  1



  • nginx配置:
    server {
        listen       443 ssl;
        server_name  localhost;
        ssl_certificate      /etc/pki/tls/certs/sv2.crt;
        ssl_certificate_key  /etc/pki/tls/private/sv2.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        ssl_client_certificate /etc/pki/CA/certs/myCA.crt;
        ssl_verify_client on;
        ssl_verify_depth 1;

------------------------------------------

另外,遇到了证书不能删除的问题。解决方法是:
使用mmc,进入 证书,即可删除。

windows上配置nginx时,可能遇到缓存等模块不可用的情况,
需要注释掉ssl_session_cache等。

生成dh参数:
dhparam -out dh1024.pem 1024

阅读(1191) | 评论(0) | 转发(0) |
0

上一篇:取消ORACLE11g用户密码过期

下一篇:bcdedit

给主人留下些什么吧!~~