环境:centos 7
nginx 版本:1.19.1
1 安装nginx
按照 https://www.runoob.com/linux/nginx-install-setup.html 教程安装即可,记得安装最新版。
wget http://nginx.org/download/nginx-1.19.1.tar.gz
nginx安装目录配置 nginx.conf 如下:/usr/local/webserver/nginx/conf
2 自签名证书
2.1 CA根证书的生成步骤
新建一个文件夹ssl
mkdir ssl
cd ssl
2.1.1 生成私钥
生成CA私钥(.key)–>生成CA证书请求(.csr)–>自签名得到根证书(.crt)(CA给自已颁发的证书)。
# Generate CA private key
openssl genrsa -out ca.key 2048
2.1.2 生成证书请求文件
这个过程会要求输入很多信息如国家、城市、组织信息等,其中 Common Name (eg, your name or your server's hostname)
是 必填项 ,可以是域名或者 IP,其他都可以回车跳过,但是这样的话在签名证书时候会报错,下一章详述,不过自签名证书不影响。
# Generate CSR
openssl req -new -key ca.key -out ca.csr
2.1.3 生成自签名证书
# Generate Self Signed certificate(CA 根证书)
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
2.2 用户证书的生成步骤
2.2.1. 生成私钥
生成私钥(.key)–>生成证书请求(.csr)–>用CA根证书签名得到证书(.crt)
服务器端用户证书:
# private key
$openssl genrsa -des3 -out server.key 1024
2.2.2 生成证书请求
# generate csr
$openssl req -new -key server.key -out server.csr
2.2.3 生成证书(根证书对用户的证书请求签名,最终生成用户证书)
使用 x509
工具生成证书,因为它默认不使用 openssl.cnf
# generate certificate
$openssl x509 -req -in server.csr -CA ca.crt \
-CAkey ca.key -out server.crt -CAcreateserial
2.2.4 验证证书有效性
openssl verify -CAfile ca.crt server.crt
2.2.5 导出证书
cat server.crt server.key > server.pem
3 配置nginx
将openssl生成的证书文件复制到nginx的目录下:
[root@localname ~]# cp -r ssl /usr/local/webserver/nginx/conf/ssl
3.1.1 配置nginx.conf文件
配置/usr/local/webserver/nginx/conf目录下的nginx.conf文件
vim /usr/local/webserver/nginx/conf/nginx.conf
修改文件如下:
server
{
listen 443;#监听端口
server_name 192.168.10.136;#域名
index index.html index.htm index.php;
root /usr/local/webserver/nginx/html;#站点目录
#注意这些路径是相对于/etc/nginx/nginx.conf文件位置
ssl on;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d;
# access_log off;
}
location ~ .*\.(js|css)?$
{
expires 15d;
# access_log off;
}
access_log off;
}
3.1.2 测试 /停止/重启nginx服务
编译/usr/local/webserver/nginx/sbin/nginx -t
重启 nginx:/usr/local/webserver/nginx/sbin/nginx -s stop
启动:/usr/local/webserver/nginx/sbin/nginx
浏览器输入(本机ip地址):https://192.168.10.136/
这时候发现浏览器提示不安全的链接,这个时候将根证书ca.crt导入浏览器,重启,发现提示消失了.
4 nginx日常操作命令
nginx -t 测试配置文件
nginx -s reload 修改配置后重载生效
nginx -s reopen 重新打开日志文件
nginx -s stop 快速停止
nginx -s quit
查看nginx进程
ps -ef | grep nginx
REF
https://www.gokuweb.com/operation/d95eae05.html
https://blog.csdn.net/liuchunming033/article/details/48470575