自签名证书

在本地开发环境中,常通过配置host来使用域名,那么怎么使用https呢,https需要证书支持,而证书需要ca机构来发布,那怎么在本地实现一个证书呢?

安装openssl

$brew install openssl 

执行以前命令

 sudo openssl req \
  -x509 \
  -nodes \
  -days 365 \
  -newkey rsa:2048 \
  -keyout example.key \
  -out example.crt
  • req:处理证书签署请求。
  • -x509:生成自签名证书。
  • -nodes:跳过为证书设置密码的阶段,这样 Nginx 才可以直接打开证书。
  • -days 365:证书有效期为一年。
  • -newkey rsa:2048:生成一个新的私钥,采用的算法是2048位的 RSA。
  • -keyout:新生成的私钥文件为当前目录下的example.key。
  • -out:新生成的证书文件为当前目录下的example.crt。

依次回答各个问题

其中最重要的一个问题是 Common Name,正常情况下应该填入一个域名,这里可以填 127.0.0.2

生成证书文件

当前目录下出现example.key和example.crt两个文件

将证书文件放到指定目录

$ mkdir conf/certs
$ mv example.crt example.key conf/certs

nginx https证书配置

$vim conf/conf.d/default.conf

server {
    listen 443 ssl;
    server_name  localhost;

    ssl                      on;
    ssl_certificate          /etc/nginx/certs/example.crt;
    ssl_certificate_key      /etc/nginx/certs/example.key;

    ssl_session_timeout  5m;

    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers   on;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

你可能感兴趣的:(自签名证书)