Quantcast
Channel: 看得透又看得远者prevail.ppt.cc/flUmLx ppt.cc/fqtgqx ppt.cc/fZsXUx ppt.cc/fhWnZx ppt.cc/fnrkVx ppt.cc/f2CBVx
Viewing all articles
Browse latest Browse all 20473

用nginx+ssl证书搭建一个不被审查的站点

$
0
0
先看nginx的配置:
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 443 ssl default_server;

        root /usr/share/nginx/html;

        ssl_certificate certs/default.pem;
        ssl_certificate_key certs/default-nopass.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
        ssl_prefer_server_ciphers on;
}

server {
    listen 443 ssl spdy;

    ssl_certificate certs/real-cert.pem;
    ssl_certificate_key certs/real-cert-nopass.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_prefer_server_ciphers on;

    root /usr/share/nginx/html;

    server_name example.com;

    location / {
                root /path/to/your/files;
                if (-d $request_filename) {
                        return 404;
                }
        try_files $uri $uri/ =404;
        charset utf-8;
    }

              
        location ~ .*/$ {
                root /path/to/your/files;
                access_by_lua '
                        local coo = ngx.var.cookie_coo
                        if coo ~= "coo" then
                                ngx.exit(404)
                        end
                ';
                autoindex on;
                autoindex_exact_size off;
        }
}

   
假设:
审查机关拥有运营商级别的入侵检测设备(比如GFW)

说明:
    全站使用https,关闭SSLv3,关闭弱加密组件
    default_server开启80端口,使用自签名证书;真实需要访问的域名(example.com)必须使用有效的证书,或者在本地信任根证书。注意example.com不能开启80端口,且与default_server使用的证书不能相同。不要使用泛域名证书。这是为了防止审查机关通过直连IP查看返回的证书中的Common Name来得到真实域名。这样配置之后,直连IP https://xxx.xxx.xxx.xxx默认是返回自签名证书,无法得到真实example.com。
    选择性开启autoindex,通过cookie鉴别。注意也可以通过HTTP Basic Authenication认证。对匹配文件夹的uri(”/”结尾)做认证,示例中只有带cookie coo=coo的请求才会返回autoindex,否则返回404。
    在location /中禁用目录末尾自动加斜杠,因为如果自动加斜杠,审查机关可以通过暴力猜测出服务器上有哪些目录确实存在(返回了301到末尾加/的url)。方法是if (-d $request_filename)返回404。
------------

在Apache下部署SSL证书实现HTTPS


HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。谷歌已经制定了一项长远的计划,它的最终目标是将所有通过HTTP协议呈现的网页标为“不安全”,对于站长来说,部署SSL证书来迁移到HTTPS是一个现实和重要的问题,那么,对于Apache webserver来说,如何部署SSL证书实现HTTPS协议呢?下面就讲述一下具体的实现方法。
  安装好Apache, 并且确认是否安装ssl模块,如果没安装的话,使用yum install mod_ssl openssl来安装ssl模块。
  之后,申请并下载SSL证书文件。通常来说有四个文件,分别是:证书文件ca.pem、证书私钥文件ca.key、证书公钥文件public.pem、证书链文件chain.pem。
  ( 1 ) 在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为ca.key;
  ( 2 ) 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”:
  #LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件)
  #Include conf/extra/httpd-ssl.conf
  ( 3 ) 打开 apache 安装目录下 conf/extra/httpd-ssl.conf 文件 (也可能是conf.d/ssl.conf,与操作系统及安装方式有关), 在配置文件中查找以下配置语句:
  # 添加 SSL 协议支持协议,去掉不安全的协议
  SSLProtocol all -SSLv2 -SSLv3
  # 修改加密套件如下
  SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
  SSLHonorCipherOrder on
  # 证书公钥配置
  SSLCertificateFile cert/public.pem
  # 证书私钥配置
  SSLCertificateKeyFile cert/ca.key
  # 证书链配置,如果该属性开头有 '#'字符,请删除掉
  SSLCertificateChainFile cert/chain.pem
  ( 4 ) 设置虚拟主机
  如果要设置http和https同时生效,那么需要为 http 在端口 80 上设立 VirtualHost,同时为 https 在端口 443 上作类似的设置。在端口 80 上的网站的 VirtualHost 例子如下
  <VirtualHost *:80>
  <Directory /var/www/vhosts/yoursite.com/httpdocs>
  AllowOverride All
  </Directory>
  DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
  ServerName yoursite.com
  </VirtualHost>
  在端口 443 上增加一个HTTPS网站,需要在文件加入如下内容
  NameVirtualHost *:443
  然后再加入一个类似如下的 VirtualHost 记录:
  <VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile /etc/pki/tls/certs/ca.crt
  SSLCertificateKeyFile /etc/pki/tls/private/ca.key
  <Directory /var/www/vhosts/yoursite.com/httpsdocs>
  AllowOverride All
  </Directory>
  DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs
  ServerName yoursite.com
  </VirtualHost>
  最后,使用如下指令重新启动 Apache , 即可实现网站的HTTPS功能。
  /etc/init.d/httpd restart

Viewing all articles
Browse latest Browse all 20473

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>