17、nginx构建https服务
1、概述
- HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单来讲是HTTP 的安全版。即HTTP 下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
它是一个URI scheme(抽象标识符体系),句法类同 http体系,用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。提供身份验证与加密通信方法,现在它被广泛用于万维网上安全敏感的通信,例如交易支付方面。国内一些大型网站用户中心、邮箱、电子支付等业务,都支持HTTPS(SSL)加密传输。
2、自行颁发不受浏览器信任的 SSL证书
-
HTTPS的SSL证书可以自行颁发。
-
首先,创建一个私钥文件。
api.bz.key和api.bz_nopass.key都是私钥文件,不同的是前者须要输入密码,而后者不须要。假设在 Linux 的/etc/rc.local文件中添加 Nginx 的启动脚本,重启服务器后,Nginx会自动启动。但是,如果私钥api.bz.key用于 Nginx,那么在 Nginx 启动时会提示输入该私钥文件的密码,Nginx 则无法完成自动启动。使用api.bz_nopass.key在启动Nginx时无须输入密码,代码如下。openssl genrsa -des3 -out api.bz.key 1024 openssl req -new -key api.bz.key -out api.bz.csr openssl rsa -in api.bz.key -out api.bz_nopass.key![image]()
-
然后,创建一个自签署的 CA 证书:
openssl req -new -x509 -days 3650 -key api.bz_nopass.key -out api.bz.crt![image]()
生成的签名文件
![image]()
-
编译带有SSL模块的nginx
-
./confiqure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-httpssl_module
make & make install
- 通过自行颁发私钥文件
api.bz_nopass.key和CA证书api.bz.crt就可以搭建安全的 Nginx Web服务器了。
server {
server_name 127.0.0.1;
listen 443;
index index.html index.htm index.php;
root /data0/htdocs/api.bz;
ssl on;
ssl_certificate api.bz.crt;
ssl_certificate_key api.bz_nopass.key;
}
注意
api.bz.crt和api.bz_nopass.key这两个文件必须和nginx.conf配置文件在同一个文件夹




浙公网安备 33010602011771号