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

【转】原来win+apache实现ssl的证书认证如此简单

[精华]原来win+apache实现ssl的证书认证如此简单http:www.chinaunix.net作者:ataman发表于:2008-05-2218:16:46【
[精华] 原来win+apache实现ssl的证书认证如此简单

http://www.chinaunix.net 作者:ataman  发表于:2008-05-22 18:16:46
【发表评论】 【查看原文】 【Web服务器讨论区】【关闭】
windows+apache的情况下,实现ssl的证书认证 (win下用openssl做证书极为困难的问题彻底解决了)
我写得非常详细,一步一步都说得很清楚。实际操作极为简单,要不了5分钟,是我的字打得太多了.如果发现错误,遗漏请提出。
首先,到http://hunter.campbus.com/去下载和自己的apache版本相同的的Apache_xxx-xxxOpenssl_xxx-Win32.zip。解压缩后找到这5个文件mod_ssl.so(modules目录),ssl.conf,ssl.default.conf(conf目录,
其中default.conf作为备份),libeay32.dll, ssleay32.dll(这2个都在bin目录)。把它们全都复制到你自己的apahce下的对应目录。

###############################################################################
接下来,更改设置文件
对于httpd.conf和ssl.conf,如果你的服务器没有域名,那么servername就填ip好了。 比如:ServerName 10.10.10.10:80(httpd.conf) ServerName 10.10.10.10:443(ssl.conf)
打开httpd.conf: 找到#LoadModule ssl_module modules/mod_ssl.so,去掉前面的‘#‘,这样就在启动时加载了ssl模块。
打开ssl.conf: 找到#;和#;,把前面的’#‘号都去掉,否则启动apache时还要加参数,麻烦。 如下设置: SSLMutex none                         (这个我是none,有人是default,具体怎么设可以研究一下) SSLCertificateFile conf/server.crt    (服务器证书的位置,就是公钥吧?) SSLCertificateKeyFile conf/server.key (服务器私钥的位置) SSLCACertificateFile conf/ca.crt      (CA根证书的位置,进行客户端验证时需要。也是一个CA公钥吧?
我把它们都放在apache的conf目录下了) DocumentRoot "xxxxx"                  (指向要ssl加密认证的文档目录,比如"f:/http")
SSLVerifyClient require               (去掉前面的‘#’号,进行客户端验证时需要) SSLVerifyDepth  1                     (去掉前面的‘#’号,把10改为1,进行客户端验证时需要)

############################################################################## 现在,就要制作证书了
去open***.net下载并安装open***。 这是一个虚拟个人网络制作工具,他能完美的在win(linux,BSD也行)下制作根、服务器、客户端证书。 安装完毕后,开始-程序-附件-命令提示符,进到open***的easy-rsa目录,比如: f:\program files\open***\easy-rsa>;_ 输入: init-config 回车
会产生几个文件,切换出来,打开vars.bat文件,修改其中的KEY_COUNTRY(国家2位字母), KEY_PROVINCE(省2位字母), KEY_CITY(城市), KEY_ORG(组织),  KEY_EMAIL(电子邮箱)这几个参数,免的后面制证时
反复输入麻烦。保存退出,继续使用命令提示符。 依次输入以下两个命令,当然是分别回车喽: vars clean-all   (这两个是准备工作)

####################################################################################
1. 建立CA根证书
接着输入build-ca   回车(这个就是建立CA根证书啦)
然后显示:
ai:/usr/share/open***/easy-rsa # ./build-ca Generating a 1024 bit RSA private key ............++++++ ...........++++++ writing new private key to \'ca.key\' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter \'.\', the field will be left blank. ----- Country Name (2 letter code) [KG]:          国家名2位字母,默认的参数就是我们刚才修改过的。 State or Province Name (full name) [NA]:    省、州名2位字母 Locality Name (eg, city) [BISHKEK]:         城市名 Organization Name (eg, company) [Open***-TEST]:     组织名 Organizational Unit Name (eg, section) []:           组织里的单位名 Common Name (eg, your name or your server\'s hostname) []:这个是关键,应该输入颁发根证书单位的域名
,不过因为是根证书,所以怎么填都无所谓。只有服务器证书才需要认真填。 Email Address [me@myhost.mydomain]: 电子邮箱
好了,CA根证书制作完成!在keys目录下,它的名字就叫ca.crt,CA的私钥是ca.key
#######################################################################
2. 现在制作服务器证书: 在命令提示符下,输入 build-key-server server   回车 你会看到和上面很相似的东西 但要注意这里的Common Name (eg, your name or your server\'s hostname) []: 这个才是真正的关键。这里应该输入服务器的域名比如www.xxx.com。 如果没有域名,就应该填ip,与httpd.conf和ssl.conf里的设置对应, ServerName 10.10.10.10:80(httpd.conf) ServerName 10.10.10.10:443(ssl.conf)
也就是说填:10.10.10.10
接下来看到 a challenge password []:填不填随便,我不填 an optional company name []: 填不填随便,我不填
sign the certificate? [y/n] 敲y回车。用CA根证书对服务器证书签字认证。 1 out 1 certificate requests certified,commit? [y/n] 敲y回车,确认。
好了,建好了在keys目录下的server.crt(证书)和server.key(私钥)
#######################################################################
3. 现在制作客户端证书:
在命令提示符下,输入 build-key client1   回车 又是一通国家省市组织等等,comman name也是随便填的。 然后 a challenge password []:填不填随便,我不填 an optional company name []: 填不填随便,我不填
sign the certificate? [y/n] 敲y回车。用CA根证书对客户端证书签字认证。 1 out 1 certificate requests certified,commit? [y/n] 敲y回车,确认。
好了,建好了在keys目录下的client1.crt(客户端证书)和client1.key(私钥)
等等, .crt的客户端证书是不能使用的,必须把它转化为.pfx格式的文件!!
所以,还是在命令提示符下,输入 openssl 回车 看到openssl>; 再输入 pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx 回车, 看到Enter export password:会要求你建立客户端证书的输出密码,我填hehe, verifying-Enter export password再确认一遍hehe,好了!
########################################################################
把keys目录下的ca.crt和server.crt,server.key都复制到apache的conf目录下,(ssl.conf需要) ca.key自己保留吧,找个合适的地方储存起来.
#########################################################################
客户端安装证书
打开internet explorer(IE),工具-internet选项-内容-证书,点选\'个人\' 再点击导入,把客户端证书client1.pfx导入到个人组里(别忘了扩展名是pfx)。 这里还要输入刚才建立的输出密码hehe才能倒入呢。
接着,点选\'受信任的根证书颁发机构\',点击导入,把CA根证书ca.crt导入到受信任的根证书颁发机构里。
#########################################################################
好啦,重新启动apache,打开IE, 在地址栏里输入https://10.10.10.10或者域名,弹出个窗口要选择个人的数字证书。 点选,然后确定。 如果服务器证书的common name填写正确的话,你就可以直接进入网站了,看到右下角的小锁头(可靠的SSL128位)。 如果服务器证书的common name填写不正确,就会弹出个‘安全警报’框,告诉你3条: 1.安全证书由信任的站点颁发 (如果说是由不信任的站点颁发,那就是你的ca根证书ca.crt没有导入到ie的受信任的根证书颁发机构里)
2.安全证书的日期有效  (这个日期缺省是10年,可以在open***的easy-rsa目录下的openssl.cnf里调整修改,然后重新制作一整套证书(openssl.cnf看起来像拨
号网络的快捷方式,要用记事本,写字板打开修改))
3.“安全证书上的名称无效,或者与站点名称不匹配” 这就是服务器证书的common name填写不正确所致,不过这也没关系,有人好像愿意这样。我是不想看到这个警告框,烦人。
即使有安全警报,你仍能进入网站,看到右下角的小锁头(可靠的SSL128位)
################################# 最后,成功啦!用吧。
我自己把httpd.conf里的listen 80都加#注释了,servername改为10.10.10.10:443,只用https不用http,嗬嗬!!!

推荐阅读
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
author-avatar
暴君1566
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有