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"