其实这个东西很久以前就想搞的了,一直没动手,直到最近总在外面跑,有时候就考虑连回家里,于是稍微动了一下手。
选nginx是因为这个服务器够轻型,做前端最好了,而且做前端的话以前也做过,有经验。
上连接:
http://blog.csdn.net/kunoy/article/details/8239653
http://blog.csdn.net/jinhill/article/details/2573777
签证书什么的感觉略微有点麻烦了,于是果断的用了openvpn的easyrsa,这套脚本帮我很轻松的完成了证书的签署。主要用到了build-ca build-key-server build-key,根据名字就看出来了,生成ca证书,生成服务器证书,生成私有证书。这部分根据不用的系统,生成的证书在不同的位置,详情再自行Google之。我是在openwrt上做的,签好的证书在/etc/easyrsa/keys下。
如果真心想认真学习签证书的话还是去做多点的Google吧。
证书和密钥到手,这时候比较推荐导出一下客户端证书,使用以下命令
openssl pkcs12 -export -inkey client.key -in client.crt -CAfile ca.crt -chain -out client.pfx
就能得到一份可以导入的私有证书了。(暂时我只找到这种笨办法)
证书都准备好之后就是服务器的配置了。
先要处理一下openssl.conf,主要是这几行
dir = /etc/easy-rsa/keys # top dir database = $dir/index.txt # index file. new_certs_dir = $dir/newcerts # new certs dir certificate = $dir/ca.crt # The CA cert serial = $dir/serial # serial no file private_key = $dir/ca.key # CA private key RANDFILE = $dir/.rand # random number file countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = match localityName = optional commonName = supplied emailAddress = optional
上半部分是证书文件的位置,下半部分是认证哪些内容是相同,自己看着修改。
openssl弄好之后就是重头戏了,nginx本身的配置。
默认的配置文件里有https服务器的实例,参照着就能弄好一个认证服务器端证书的,只要稍微加上几行就能加上私有证书的认证了。
# HTTPS server server { listen 443; server_name Router; charset utf8; ssl on; ssl_certificate /etc/easy-rsa/keys/ferrets.imzone.in.crt; ssl_certificate_key /etc/easy-rsa/keys/ferrets.imzone.in.key; ssl_client_certificate /etc/easy-rsa/keys/ca.crt; #客户端证书认证所需要的ca证书 ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_verify_client on; #启用客户端证书认证 location / { proxy_pass ; proxy_redirect default; } location /transmission { proxy_pass ; proxy_redirect default; } }
嗯,像上面一样的配置文件我就是做的代理服务器,转发到192.168.1.1和192.168.1.1:9091,方便远程管理路由和transmission。
感觉一下子强力了好多啊。