奔牛网>服务器>nginx>>Nginix开启SSL支持HTTPS访问(自签名方法)
2017年05月19日

Nginix开启SSL支持HTTPS访问(自签名方法)

 

百度来的HTTPS概念:超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混。

HTTPS 目前已经是所有注重隐私和安全的网站的首选,随着技术的不断发展,HTTPS 网站已不再是大型网站的专利,所有普通的个人站长和博客均可以自己动手搭建一个安全的加密的网站。如果访问的一个网站没有加密,那么你输入的所有帐号密码都是明文传输,可以被拦截读取,因此在涉及到隐私和金融等高保密环境,是必须要使用HTTPS加密的。

 

 

目前对我们来说证书有两种方式,一种是自签名证书,一种是经过各大浏览器系统认证支持的CA证书,如果使用自签名证书,虽然数据传输仍然是加密的,但是在用户浏览器上,会弹出证书错误提示因此最好还是使用第三方认证的SSL 证书。目前对我们来说还是有一些免费证书机构提供这个认证的,比如Let’s Encrypt 的免费证书,虽然要3个月重签一次,不过是一直免费的,Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS。当然如果你网站是商业用的要求有稳定的HTTPS安全环境,其实是可以买商用的SSL证书的,比如GODADDY的SSL也不贵。

 

自签名方式:如需要受浏览器信任的证书安装方式,可以看这里:Nginix开启SSL支持HTTPS访问(使用Let's Encrypt免费证书)

先教你自签名的方式,虽然这个很鸡肋,在有免费证书可以用的情况下,基本没人用了:

1、首先机器上要安装openssl和openssl-devel

#yum install openssl

#yum install openssl-devel

 

2、自己颁发证书给自己

 

 

①进入目录

#cd /usr/local/nginx/conf

 

②创建服务器RSA私钥,命令会让你输入一个口令:

 

#openssl genrsa -des3 -out server.key 1024

 

③创建签名请求的证书(CSR):这里会提示输入省份(State / Province)、城市(City)、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。当然我这里并没有向证书提供商申请,下一步我们自己签发了证书。

#openssl req -new -key server.key -out server.csr

 

④在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:

#openssl rsa -in server.key -out server_nopwd.key

 

⑤标记证书使用上述私钥和CSR:

#openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt

 

到这里证书已经生成完毕

 

 

3、配置nginx,修改Nginx配置文件,让其包含新标记的证书和私钥:

server {

    listen 443;

    ssl on;

    ssl_certificate  /usr/local/nginx/conf/server.crt;

    ssl_certificate_key  /usr/local/nginx/conf/server_nopwd.key;

}

 

加上括号内的语句,然后重启nginx。

另外如果出现“[emerg] 10464#0: unknown directive “ssl” in /usr/local/nginx-0.6.32/conf/nginx.conf:74”则说明没有将ssl模块编译进nginx,在编译configure的时候需加上"–with-http_ssl_module"

 

 

另外还可以加入如下代码实现80端口301重定向到443,

 

server {

listen 80;

server_name www.bnxb.com;

rewrite ^(.*) https://$server_name$1 permanent;

}

 

 

到这里就配置完成,可以用https://www.bnxb.com这种方式访问你的网站了,但是因为这里是自签名证书,浏览器没办法验证证书真伪,因此如果要去除浏览器访问的证书错误提示,可以把之前生成的server.crt文件使用winscp之类的SSH下载软件下载下来,导入到你电脑系统的证书管理器就行了,具体方法:控制面板 -> Internet选项 -> 内容 -> 发行者 -> 受信任的根证书颁发机构 -> 导入 -》选择server.crt

顶(0)
踩(0)
最新评论