背景
很多应用的软件部署时采用的http,由于安全问题会被要求用https,所以在不影响已部署的服务的情况下,可以让nginx来帮助实现这个功能。
实现
获取一个证书
证书获取有两种办法:经过认证的证书以及自己生成的没被认证的证书,生产环境还是推荐使用第一种。
- 获取免费的认证证书
1)获取证书,首先需要一个域名,大家可以参考
https://blog.youkuaiyun.com/HW140701/article/details/85156494
以及
https://blog.youkuaiyun.com/HW140701/article/details/85176191
2)申请免费证书
https://blog.youkuaiyun.com/mybelief321/article/details/54429314
- 自己生成证书
创建您自己的CA证书:
$ openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout ca.key \
-x509 -days 365 -out ca.crt -subj '/C=CN/ST=PEK/L=Bei Jing/O=YUN/CN=CA'
生成证书签名请求:
$ openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout 域名.key \
-out 域名.csr -subj '/C=CN/ST=PEK/L=Bei Jing/O=YUN/CN=域名'
使用 CA 证书及CA密钥 对证书签名请求进行签发,生成 x509证书
$ openssl x509 -req -days 365 -in 域名.csr -CA ca.crt \
-CAkey ca.key -CAcreateserial -out 域名.crt
自此自签名证书生成完毕
安装nginx
1、安装nginx依赖环境包
yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
2、官网下载nginx1.12.0压缩包
wget https://nginx.org/download/nginx-1.12.0.tar.gz
3、解压nginx
tar zxf nginx-1.12.0.tar.gz
4、进入解压目录
cd nginx-1.12.0
5、编译nginx
1)默认编译方式
./configure
--prefix=/usr/local/nginx
--with-http_stub_status_module
--with-http_ssl_module
注:以上–with-http_ssl_module这个模块是https的关键,必须安装!
6、安装nginx
make && make install
7、启动nginx
nginx的可执行文件在 /usr/local/nginx/sbin/目录里面
/usr/local/nginx/sbin/nginx
即可启动
/usr/local/nginx/sbin/nginx -s stop
可以停掉
/usr/local/nginx/sbin/nginx -s reload
当修改了配置文件,上面的命令可以重新加载配置文件
8 . 查看 nginx是否启动成功
注意下面红框的模块一定要存在,这是配置https的关键
配置nginx(https)
打开nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
需要修改server的80和443端口对应的配置
80的server的意思是:当收到客户端要访问 http://域名时(当然server_name也可以是域名+端口号),访问的是80端口,会强制将访问ip转换成https://域名。所以会跳转到 443的server的配置(https对应的端口是443),因为启用了ssl模块,所以会使用你所配置的两个证书和密钥文件进行验证,当成功后会执行下面的location的配置,跳转到location里面配置的网址,这个网址就是我们想给他加上https的网址。
重新reload以下nginx
/usr/local/nginx/sbin/nginx -s reload
测试
当完成以上配置及重启nginx后,可以在浏览器访问http://域名,看是否会自动跳转称https://域名
参考
https://blog.youkuaiyun.com/HW140701/article/details/85156494
https://blog.youkuaiyun.com/HW140701/article/details/85176191
https://blog.youkuaiyun.com/mybelief321/article/details/54429314