ssl证书

使用本文的脚本,一键生成所需的证书,本进行配置证书。主要使用的工具openssl工具。

自签证书

主要的过程如下:

#!/bin/bash

mkdir -p /usr/local/nginx/ssl
cd /usr/local/nginx/ssl

# 1)创建私钥:
echo "创建私钥"
openssl genrsa -out server.key 2048
#openssl genrsa -out server.key 1024

# 2)证书请求:
#  注意有些信息要认真填
echo "创建证书,hostname等信息要认证填"
openssl req -new -out server.csr -key server.key 

# 3)创建自签署证书:
echo "创建自签署证书"
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt


# 4)nginx 使用证书
cat >> ssl_example.conf <<EOL
server {
    listen 80;
    server_name localhost;
    listen 443 ssl;

    ssl_certificate /usr/local/nginx/ssl/server.crt;
    ssl_certificate_key /usr/local/nginx/ssl/server.key;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    ssl_protocols SSLv2 SSLv3 TLSv1;

    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

  location {
  }
}
EOL

下面的部分是需要新增的。但是下面的行尾中文注释,需要去掉。

listen 443 ssl;  # 这样可以设置一个虚拟主机同时支持HTTP和HTTPS

ssl_certificate /usr/local/nginx/ssl/server.crt;  #指定证书文件
ssl_certificate_key /usr/local/nginx/ssl/server.key;  #指定密钥文件

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;  #指定密码为openssl支持的格式

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

下面的default只能在listen里面指定一次,不能在多个vhost里面指定。

listen 443 default ssl;

自签证书问题

git

# 忽略证书安全
git config --global http.sslVerify false
# 验证
git config --global http.sslVerify true

# 另外一种方式
env GIT_SSL_NO_VERIFY=true
git push /git pull

浏览器大概会弹出安全验证,点击继续浏览即可。

curl

# 使用-k 进行忽略自签证书的安全性问题
curl -k  --request GET https://myweb.com/index.html

其他命令

其他的命令如下

openssl req -new -newkey rsa:2048 -sha256 -nodes -out iivey.csr -keyout iivey.key -subj "/C=CN/ST=beijing/L=beijing/O=iivey Inc./OU=Web Security/CN=iivey.com"