- 浏览: 2045161 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
最近的项目中需要安全性控制,而我又懒得改动后台的程序代码,故而想在反向代理层加入SSL证书验证。
一直在用Nginx做反向代理,但是其SSL的配置只用过普通的服务端单向证书。在Google,百度狂搜一通之后,一无所获,依旧是那老三样,只有单向认证的示例。浏览器端双向认证的配置好像从没人写过。
无奈之下,只好从OpenSSL的客户端证书开始学起,一点一点啃,大段大段的E文让我这半瓶子醋看的头晕眼晕。最后在
http://it.toolbox.com/blogs/securitymonkey/howto-securing-a-website-with-client-ssl-certificates-11500
的提示下终于把这个证书搞定,来秀一个。
这需要一下几个步骤:
1) 安装openssl用来做证书认证
2) 创建一个CA根证书
3) 创建一个自签名的服务器证书
4) 设置Nginx
5) 创建客户端证书
6) 安装客户端证书到浏览器
7) Profit.
1)
这一步我是在ubuntu下直接apt-get装的openssl, 配置文件安装在/etc/ssl/openssl.cnf
修改openssl.cnf的以下几段
[ ca ]
default_ca = foo
Openssl将会寻找名称为foo的配置段
policy_match 我保持默认值没有改
默认签发有效期为10年,你可以自己设置一个合适的值
2)
创建一个新的CA根证书
下面的几个脚本我都放在/etc/ssl目录下
new_ca.sh:
执行 sh new_ca.sh 生成新的CA证书
3)
生成服务器证书的脚本
new_server.sh:
执行 sh new_server.sh 生成新服务器的证书
4)
最要命的一步,尝试多次后终于搞明白。
配置 nginx 的ssl支持
我的配置如下:
启动你的nginx ,等待客户连接
5)
现在来生成客户端证书
new_user.sh:
执行 sh new_user.sh yourname 来生成一个 yourname 的client证书
按照提示一步一步来,这里要注意的是客户证书的几个项目要和根证书匹配
也就是第一步时配置的:
不一致的话无法生成最后的客户证书
6)
发送上一步生成的 yourname.p12 到客户端。
IE下双击安装就可以导入。
FireFox安装 :
Go into preferences.
Advanced.
View Certificates.
Import.
Enter master password for FireFox (if you don't have one set one here otherwise stolen laptop = easy access).
Enter in the export password given to you by the dude who created your cert.
Hit OK like a mad man.
打开网站会弹出对话框来要求你选择使用哪个证书,选择刚才安装的证书。选择接受服务器证书。现在你可以正常访问服务器拉。如果没弄对的话就会出现400 Bad request certification的错误
7)
没啥拉,有问题多试几次,其实都是很简单的事。就是中文的资料太少了。
:)
原文http://blog.csdn.net/rosw/archive/2008/12/04/3441187.aspx
一直在用Nginx做反向代理,但是其SSL的配置只用过普通的服务端单向证书。在Google,百度狂搜一通之后,一无所获,依旧是那老三样,只有单向认证的示例。浏览器端双向认证的配置好像从没人写过。
无奈之下,只好从OpenSSL的客户端证书开始学起,一点一点啃,大段大段的E文让我这半瓶子醋看的头晕眼晕。最后在
http://it.toolbox.com/blogs/securitymonkey/howto-securing-a-website-with-client-ssl-certificates-11500
的提示下终于把这个证书搞定,来秀一个。
这需要一下几个步骤:
1) 安装openssl用来做证书认证
2) 创建一个CA根证书
3) 创建一个自签名的服务器证书
4) 设置Nginx
5) 创建客户端证书
6) 安装客户端证书到浏览器
7) Profit.
1)
这一步我是在ubuntu下直接apt-get装的openssl, 配置文件安装在/etc/ssl/openssl.cnf
修改openssl.cnf的以下几段
[ ca ]
default_ca = foo
Openssl将会寻找名称为foo的配置段
[ foo ] dir = /etc/ssl/private database = $dir/index.txt serial = $dir/serial private_key = $dir/ca.key certificate = $dir/ca.crt default_days = 3650 default_md = md5 new_certs_dir = $dir policy = policy_match
policy_match 我保持默认值没有改
[ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = match commonName = supplied emailAddress = optional
默认签发有效期为10年,你可以自己设置一个合适的值
2)
创建一个新的CA根证书
下面的几个脚本我都放在/etc/ssl目录下
new_ca.sh:
#!/bin/sh # Generate the key. openssl genrsa -out private/ca.key # Generate a certificate request. openssl req -new -key private/ca.key -out private/ca.csr # Self signing key is bad... this could work with a third party signed key... registeryfly has them on for $16 but I'm too cheap lazy to get one on a lark. # I'm also not 100% sure if any old certificate will work or if you have to buy a special one that you can sign with. I could investigate further but since this # service will never see the light of an unencrypted Internet see the cheap and lazy remark. # So self sign our root key. openssl x509 -req -days 3650 -in private/ca.csr -signkey private/ca.key -out private/ca.crt # Setup the first serial number for our keys... can be any 4 digit hex string... not sure if there are broader bounds but everything I've seen uses 4 digits. echo FACE > private/serial # Create the CA's key database. touch private/index.txt # Create a Certificate Revocation list for removing 'user certificates.' openssl ca -gencrl -out /etc/ssl/private/ca.crl -crldays 7
执行 sh new_ca.sh 生成新的CA证书
3)
生成服务器证书的脚本
new_server.sh:
# Create us a key. Don't bother putting a password on it since you will need it to start apache. If you have a better work around I'd love to hear it. openssl genrsa -out private/server.key # Take our key and create a Certificate Signing Request for it. openssl req -new -key private/server.key -out private/server.csr # Sign this bastard key with our bastard CA key. openssl ca -in private/server.csr -cert private/ca.crt -keyfile private/ca.key -out private/server.crt
执行 sh new_server.sh 生成新服务器的证书
4)
最要命的一步,尝试多次后终于搞明白。
配置 nginx 的ssl支持
我的配置如下:
# HTTPS server # server { listen 443; server_name localhost;
# 打开ssl ssl on; # 上一步生成的服务器证书 ssl_certificate /etc/ssl/private/server.crt; # 服务器证书公钥 ssl_certificate_key /etc/ssl/private/server.key; # 客户端证书签名 也就是第二步生成的CA签名证书 ssl_client_certificate /etc/ssl/private/ca.crt; # ssl session 超时 ssl_session_timeout 5m; # 打开SSL客户端校验 (双向证书检测) ssl_verify_client on; #ssl_protocols SSLv2 SSLv3 TLSv1; #ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; location / { root /var/www/nginx-default; index index.html index.htm; }
启动你的nginx ,等待客户连接
5)
现在来生成客户端证书
new_user.sh:
#!/bin/sh # The base of where our SSL stuff lives. base="/etc/ssl/private" # Were we would like to store keys... in this case we take the username given to us and store everything there. mkdir -p $base/users/$1/ # Let's create us a key for this user... yeah not sure why people want to use DES3 but at least let's make us a nice big key. openssl genrsa -des3 -out $base/users/$1/$1.key 1024 # Create a Certificate Signing Request for said key. openssl req -new -key $base/users/$1/$1.key -out $base/users/$1/$1.csr # Sign the key with our CA's key and cert and create the user's certificate out of it. openssl ca -in $base/users/$1/$1.csr -cert $base/ca.crt -keyfile $base/ca.key -out $base/users/$1/$1.crt # This is the tricky bit... convert the certificate into a form that most browsers will understand PKCS12 to be specific. # The export password is the password used for the browser to extract the bits it needs and insert the key into the user's keychain. # Take the same precaution with the export password that would take with any other password based authentication scheme. openssl pkcs12 -export -clcerts -in $base/users/$1/$1.crt -inkey $base/users/$1/$1.key -out $base/users/$1/$1.p12
执行 sh new_user.sh yourname 来生成一个 yourname 的client证书
按照提示一步一步来,这里要注意的是客户证书的几个项目要和根证书匹配
也就是第一步时配置的:
countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = match
不一致的话无法生成最后的客户证书
6)
发送上一步生成的 yourname.p12 到客户端。
IE下双击安装就可以导入。
FireFox安装 :
Go into preferences.
Advanced.
View Certificates.
Import.
Enter master password for FireFox (if you don't have one set one here otherwise stolen laptop = easy access).
Enter in the export password given to you by the dude who created your cert.
Hit OK like a mad man.
打开网站会弹出对话框来要求你选择使用哪个证书,选择刚才安装的证书。选择接受服务器证书。现在你可以正常访问服务器拉。如果没弄对的话就会出现400 Bad request certification的错误
7)
没啥拉,有问题多试几次,其实都是很简单的事。就是中文的资料太少了。
:)
原文http://blog.csdn.net/rosw/archive/2008/12/04/3441187.aspx
发表评论
-
在ubuntu中.profile 和.bashrc的加载区别
2013-06-01 21:38 2451总之,profile不只是bash,在启动加载 bashrc是 ... -
command line tools for linux
2013-02-14 23:49 1422du -sh `ls .` for i in G M K; ... -
ubuntu 12.10 proxy install package apt-get
2013-01-31 06:47 1165#/.bashrc export http_proxy= ... -
查找多文件内容替换
2012-09-14 20:58 1446UPDATE: (05/03/2013) 当前使用: # ... -
shell script
2012-09-11 21:08 992select r.name, count(p.id) from ... -
定期清空日志文件
2012-09-11 10:04 3296一个关于如何在指定文件大于1GB后,自动删除的问题。 批处理代 ... -
查看一个进程占用了那个端口
2012-09-11 09:59 1672有时候需要在Linux下查看一个进程占用了那个端口,但是只知道 ... -
utf8 ruby1.9
2012-07-13 01:57 1278引用invalid byte sequence in utf- ... -
VIM下跳转的区别
2012-05-06 00:33 1335VIM在开tag和jumplist的时候有几个差别 经常用的 ... -
shell command
2012-04-11 21:42 868ls -l . | egrep -c '^d' ls -l . ... -
unbuntu 查看什么占着80端口
2012-01-19 12:37 1389sudo lsof -i :80 sudo nets ... -
处理僵尸进程
2011-05-27 01:45 1117#!/bin/sh kill -HUP `ps -A - ... -
ubuntu 看硬件配置
2011-05-02 02:03 5236总是忘记阿,标记一下 sudo lspci -v lshw ... -
no such file to load -- zlib
2011-04-25 23:52 2704或者提示 fatal error: zlib.h: No su ... -
新装的mysql出现无法登陆的问题 er 1405 参考下面的解决
2011-01-23 12:39 3028Installing MySQL 5.0 First we ... -
ssh无密码登入设置
2010-08-17 21:02 1349现有2台机器 1、服务器192.168.1.112 2、个人机 ... -
bash和乱码
2010-08-16 00:15 1864几个bash下配置的区别 1)/etc/profile: 此文 ... -
ubuntu 配置git服务器及其它
2010-08-15 23:46 2114update: 生产public key的时候不能按照git ... -
nohup命令让程序在后台运行-linux
2010-02-04 14:17 6960nohup ruby /sunrise/www/realwor ... -
shell 条件可能用到
2010-01-26 15:05 1477为什么不能用ruby脚本写啊,shell脚本写的俺很烦啊... ...
相关推荐
docker cp server.key nginx:/etc/ssl/certs/ docker cp server.crt nginx:/etc/ssl/certs/ nginx得配置文件进行修改如下: listen 443 ssl; ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /...
Nginx双向SSL认证配置详细步骤
vi /etc/init.d/nginx 修改nginx后 chmod +x /etc/init.d/nginx /sbin/chkconfig nginx on sudo /sbin/chkconfig --list nginx /etc/init.d/nginx start
主要介绍了Nginx配置SSL自签名证书的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
用keytool生成证书,双向SSL认证配置的方法,以Tomcat举例。包含步骤:一、为服务器生成证书;二、为客户端生成证书;三、让服务器信任客户端证书;四、让客户端信任服务器证书。
主要介绍了详解Nginx SSL快速双向认证配置(脚本),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本资源是一个 CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证配置示例。详细如何配置请参考博客《图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证》,地址是:...
实现nginx双活+双向SSL认证+高并发+安全加固+会话共享+主被动健康探测部署
WoSign全程视频指导如何部署Nginx应用服务器部署服务器SSL服务器证书。让您直观易懂
ssl自制全套证书(包含服务器端、客户端、ca端的证书,格式有.crt,.key,.truststore,.keystore,.p12,.cer,.pem等类型),当时要配置webservice接口、tomca、nginx通过ssl访问的证书,弄了好久才生成了一套能使用的。...
nginx.conf的配置访问ssl证书
NULL 博文链接:https://hlee.iteye.com/blog/569381
Windows下Nginx配置SSL实现Https访问(包含证书生成)
通过OpenSSL生成的ssl证书,用于windows下用nginx配置https服务器( OpenSSL创建证书) 无需再下载OpenSSL,配置OpenSSL相关环境,在进行命令生成证书
Vue项目结果build编译后,放在Nginx的html文件夹内,替换该配置文件,就可以在Nginx服务器上运行Vue项目
NULL 博文链接:https://hanqunfeng.iteye.com/blog/1921084
docker构建nginx双向认证https服务器。 openssl命令生成双向认证自签名证书。 nginx配置https(tls)服务。 浏览器访问服务器需要导入客户端证书到浏览器中。
为网站安装免费的ssl安全证书,使用阿里云的安全正式安装,配置nginx、tomcat,让自己的网站可以访问https,让网站不再打上“不安全”标记。
linux安装nginx并支持ssl,使得服务器支持证书签名,提升应用的安全性
nginx负载均衡ssl证书认证强制跳转https+keeplived+apache