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.keyapi.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.crtapi.bz_nopass.key这两个文件必须和nginx.conf配置文件在同一个文件夹

image

posted on 2024-01-17 15:52  ccblblog  阅读(49)  评论(0)    收藏  举报

导航