OpenSSL创建自签名SSL证书及Nginx配置

ssl自签名证书   nginx ssl配置   运维技术  

一、例如给test.imdst.com创建自签名证书

  • 创建根证书的私匙
    openssl genrsa -out test.imdst.com.key 2048

  • 利用私钥创建签名请求
    openssl req -new -subj "/C=US/ST=GuangDong/L=GuangZhou/O=Your Company Name/OU=imdst.com/CN=test.imdst.com" -key test.imdst.com.key -out test.imdst.com.csr
    说明:这里/C表示国家(Country),只能是国家字母缩写,如CN、US等;/ST表示州或者省(State/Provice);/L表示城市或者地区(Locality);/O表示组织名(Organization Name);/OU其他显示内容,一般会显示在颁发者这栏。

  • 将带口令的私钥移除
    mv test.imdst.com.key test.imdst.com.origin.key
    openssl rsa -in test.imdst.com.origin.key -out test.imdst.com.key

  • 用Key签名证书
    openssl x509 -req -days 3650 -in test.imdst.com.csr -signkey test.imdst.com.key -out test.imdst.com.crt

  • 为HTTPS准备的证书需要注意,创建的签名请求的CN必须与域名完全一致,否则无法通过浏览器验证

test.imdst.com.crt         自签名的证书  
test.imdst.com.csr         证书的请求  
test.imdst.com.key         不带口令的Key  
test.imdst.com.origin.key  带口令的Key  

二、nginx配置ssl验证

  • 把test.imdst.com.crt发给浏览器验证,然后用test.imdst.com.key解密浏览器发送的数据
  • nginx server {}配置
server  
{
        listen       443 ssl;
        server_name  test.imdst.com;
        access_log /data/logs/test.access_log;
        ssl on;
        ssl_certificate sslkey/test.imdst.com.crt; 
        ssl_certificate_key sslkey/test.imdst.com.key;
        ssl_session_timeout  5m;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDH:AES:HIGH:!aNULL:!MD5:!ADH:!DH;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

}