1 使用openssl生成证书
这里我们使用openssl进行CA证书自签,用来学习,有条件的可以让第三方机构进行证书签名。
openssl是目前最流行的SSL密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS协议的实现。
生成所需要的crt文件
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/nginx/ssl/nginx.key -out /usr/local/nginx/ssl/nginx.crt
执行上面的命令会出现以下内容需要进行填写,根据自己的情况进行填写。
Country Name (2 letter code) [XX]:CN //国家名称(2个字母代码)[XX]:CN
State or Province Name (full name) []:JS //州或省名(全名)[]:SC
Locality Name (eg, city) [Default City]:KS //地点名称(如城市)[默认城市]:CD
Organization Name (eg, company) [Default Company Ltd]:test.com // 组织名称(如公司)[Default Company Ltd]:test.com
Organizational Unit Name (eg, section) []:ops// 组织单位名称(例如,部分)[]:ops
Common Name (eg, your name or your server's hostname) []:www.test.com // 通用名称(例如,您的姓名或服务器的主机名)[]:CA.test.com
Email Address []:admin@ca.test.com // 电子邮件地址[]:admin@ca.test.com
最后生成了两个文件
image.png
2 nginx安装http_ssl_module模块
Nginx如果未开启SSL模块,配置Https时提示错误。
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:xxx
nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了。
本场景是服务器已经安装过nginx,但是未安装http_ssl_module。
首先进入到源码包路径下。
执行configure命令:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
编译
make
注:不需要执行make install,否则就覆盖安装了
备份一下原来的nginx
cp -r /usr/local/nginx/ /usr/local/nginx_bak
然后将刚刚编译好的nginx覆盖掉原有的nginx(nginx需要停止)
cp objs/nginx /usr/local/nginx/sbin/
image.png
查看安装情况(注意V大写):
/usr/local/nginx/sbin/nginx -V
image.png
3 配置https
更改nginx.conf文件
server {
listen 443 ssl;
server_name localhost;
ssl_certificate ../ssl/nginx.crt;
ssl_certificate_key ../ssl/nginx.key;
location / {
root html;
index index.html index.htm;
}
}
用https访问
image.png
可以看到地址栏上出现了红色的https,这是否与我们使用的是自签证书,所以安全程度并不高,正常的话还是要让第三方CA机构进行证书签名。
网友评论