热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx服务器安装配置ssl加密代理的方法

使用nginx加密代理利用基于ssl的传输增强安全性,而且可以不用写程序实现用户认证,实用性很强。首先编译安装:我用的是debiantesting,要先装好pcre,然后编译安装:./configure--prefix/home/nginx--with-md5/usr/lib--with-sha1/usr/lib--w
使用nginx加密代理利用基于ssl的传输增强安全性,而且可以不用写程序实现用户认证,实用性很强。 首先编译安装:
我用的是debian testing,要先装好pcre,然后编译安装:
./configure --prefix=/home/nginx --with-md5=/usr/lib --with-sha1=/usr/lib --with-cc-opt="-I /usr/include/pcre -I /usr/include/openssl" --with-http_ssl_module 
make -j10
make install

假如用的不是debian,openssl可能要自己编译安装,下载:
wget http://www.openssl.org/source/openssl-0.9.8k.tar.gz
tar -zxvf openssl-0.9.8k.tar.gz
cd openssl-0.9.8k
./config
make
make install

这样安装后openssl会被安装到/usr/local/ssl/目录下,如无特殊必要,就不要想方设法覆盖系统本身的openssl,否则可能会造成openssh连不上,那就麻烦大了。
nginx的编译参数也要相应修改:
./configure --prefix=/home/nginx --with-md5=/usr/lib --with-sha1=/usr/lib --with-cc-opt="-I /usr/include/pcre -I /usr/local/ssl/include/openssl" --with-http_ssl_module 
make -j10
make install

配置

1、ssl使用443端口,不是80,修改listen
listen 443;#ssl端口
listen 80;#用户习惯用http访问,加上80,后面有配置让它自动跳到443端口

2、配置ssl
完整示例:
upstream test.com {
server 192.168.1.2:80;
}
server {
server_name test.com;
include port.conf;
ssl on;
ssl_certificate server.crt; # ${nginx_install_dir}/conf/server.crt
ssl_certificate_key server.key; # ${nginx_install_dir}/conf/server.key
error_page 497 "https://$host$uri?$args";
location / {
        proxy_pass http://test.com;
        include proxy.conf;# 
        auth_basic "status";
        auth_basic_user_file trac.passwd; 
}
}


其中分为两段:

第一段:
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
error_page 497 "https://$host$uri?$args";
1/开启ssl,server.crt和server.key是用keygen.sh生成,对应${nginx_install_dir}/conf/server.crt和${nginx_install_dir}/conf/server.key。
2/keygen.sh下载后执行sh keygen.sh就可以在/etc/apache_ssl/下生成server.crt和server.key,拷到nginx的conf目录下就好了。
3/error_page 497那句话是令http请求自动跳到https,例如http://test.com/asdf.html?a=1会自动302跳转到https://test.com/asdf.html?a=1。

第二段:
proxy_pass https://test.com;
include proxy.conf;
auth_basic "status";
auth_basic_user_file trac.passwd; 

1/proxy_pass https://test.com;
注意这里是http,https也可以代理得过去,https默认是用443端口的,在upstream里配置就是了。

2/proxy.conf在proxy.conf。

3/auth_basic "status";
指定认证方式为htpasswd类型,auth_basic_user_file指定password文件为trac.passwd,对应${nginx_install_dir}/conf/trac.passwd。

4/htpasswd是apache里的一个小工具,apt-get install apache2-utils后可以得到它,或者干脆就在这里创建:http://sudone.com/htpasswd.php,把生成结果贴到trac.passwd里就可以了。
  新建一个htpasswd:
  htpasswd -c trac.passwd username
  加用户:
  htpasswd trac.passwd username

配置完之后访问https://test.com,先弹出一个证书框,然后弹出一个用户密码填写框,填入trac.passwd中的用户名和密码,就可以访问了。
访问http://test.com,多一步跳转,效果一样。
-----------------------------------------------------------
最近配通了nginx和CNNIC的ssl证书,这种证书为可信任机构颁发,它除了server.crt和server.key外,还需要有一个root.crt来做第三方认证,以证明server.crt和server.key是正规颁发的,没有经过伪造。
从前有段时间因为测试nginx和CNNIC的证书未能测通,最后还是用了apache,最近问了网易通行证的同事,学习到了这个配法。
其实很简单,安装和配置文件都一样,就是证书方面有一点点问题罢了。
在apache中配置有三段,是CNNIC给出的标配:
SSLCertificateFile /etc/apache2/ssl/server.cer
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SSLCertificateChainFile /etc/apache2/ssl/CNNIC.cer
其中文件server.key,就是nginx的server.key;server.cer+CNNIC.cer就是nginx的server.crt。
server.key基本不用修改变化,留意下第一行和最后一行:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
要保持完整
server.crt就是两个文件的合并:
cat CNNIC.cer >> server.cer
mv server.cer server.crt
最后一个问题是最致命的了,也是我一直测不成功的原因,看图:

要保持-----BEGIN CERTIFICATE-----这些东东的正确格式,这样才能成功。

推荐阅读
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 网络安全实验:Telnet与SSH服务对比及抓包分析
    本实验旨在对比Telnet和SSH两种安全通信协议的服务差异,并通过搭建服务器和使用Wireshark抓包工具进行详细分析。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 在开发板的启动选项中看到如下两行:7:LoadBootLoadercodethenwritetoFlashviaSerial.9:LoadBootLoadercodethenwri ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 在优化Nginx与PHP的高效配置过程中,许多教程提供的配置方法存在诸多问题或不良实践。本文将深入探讨这些常见错误,并详细介绍如何正确配置Nginx和PHP,以实现更高的性能和稳定性。我们将从Nginx配置文件的基本指令入手,逐步解析每个关键参数的最优设置,帮助读者理解其背后的原理和实际应用效果。 ... [详细]
  • Awk是一款功能强大的文本分析与处理工具,尤其在数据解析和报告生成方面表现突出。它通过读取由换行符分隔的记录,并按照指定的字段分隔符来划分和处理这些记录,从而实现复杂的数据操作。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
author-avatar
杯莫停
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有