Apache配置HTTPS协议
linuxapacheTomcat配置SSL(https)步骤
linuxapacheTomcat配置SSL(https)步骤1. https简介它是由Netscape开发并内置于其浏览器中,⽤于对数据进⾏压缩和解压操作,并返回⽹络上传送回的结果。
HTTPS实际上应⽤了Netscape的安全套接字层(SSL)作为HTTP应⽤层的⼦层。
(HTTPS使⽤端⼝443,⽽不是象HTTP那样使⽤端⼝80来和TCP/IP进⾏通信。
)SSL使⽤40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。
HTTPS和SSL⽀持使⽤X.509数字认证,如果需要的话⽤户可以确认发送者是谁。
也就是说它的主要作⽤可以分为两种:⼀种是建⽴⼀个信息安全通道,来保证数据传输的安全;另⼀种就是确认⽹站的真实性。
2. HTTPS和HTTP的区别 ⼀、https协议需要到ca申请证书,⼀般免费证书很少,需要交费。
⼆、http是超⽂本传输协议,信息是明⽂传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。
四、http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、⾝份认证的⽹络协议,⽐http协议安全。
3. SSL介绍为Netscape所研发,⽤以保障在Internet上数据传输之安全,利⽤数据加密(Encryption)技术,可确保数据在⽹络上之传输过程中不会被截取及窃听。
⽬前⼀般通⽤之规格为40 bit之安全标准,美国则已推出128 bit之更⾼安全标准,但限制出境。
只要3.0版本以上之I.E.或Netscape浏览器即可⽀持SSL。
当前版本为3.0。
它已被⼴泛地⽤于Web浏览器与服务器之间的⾝份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应⽤层协议之间,为数据通讯提供安全⽀持。
SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建⽴在可靠的传输协议(如TCP)之上,为⾼层协议提供数据封装、压缩、加密等基本功能的⽀持。
apachehttps配置详细步骤讲解
apachehttps配置详细步骤讲解SSL: SSl是为Http传输提供安全的协议,通过证书认证来确保客户端和⽹站服务器之间的数据是安全。
也就是说在SSL下http 传输是安全的,我们成为 https.配置过程如下:1.安装配有SSL模块的apache,apache_2.2.8-win32-x86-openssl-0.9.8g2.配置apache以⽀持SSL:打开apache的配置⽂件conf/httpd.conf1)LoadModule ssl_module modules/mod_ssl.soInclude conf/extra/httpd-ssl.conf去掉两⾏前⾯的#2)注意修改httpd-ssl.conf ⽂件⾥的两个字段:SSLCertificateFile "C:/Apache2.2/conf/server.crt"SSLCertificateKeyFile "C:/Apache2.2/conf/server.key"3.安装php,整合apache和Php(略)为下⾯你所⽣成的证书和密钥地址。
1. ⽣成服务器的私钥进⼊命令⾏:D:\local\apache2\bin\openssl genrsa -out server.key 1024在当前⽬录下⽣成了⼀个server.key⽣成签署申请2. ⽣成签署申请D:\local\apache2\bin>openssl req -new –out server.csr -key server.key -config ..\conf\f此时⽣成签署⽂件server.csr.1.⽣成CA私钥D:\local\apache2\bin\openssl genrsa -out ca.key 1024多出ca.key⽂件2.利⽤CA的私钥产⽣CA的⾃签署证书D:\local\apache2\bin\openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ..\conf\f此时需要输⼊⼀些信息,注意Common Name为服务器域名,如果在本机,为本机IP。
Linux Apache 的 HTTPS 配置
Linux Apache 的 HTTPS 配置我以前在 Windows 上配置过Apache的 SSL/HTTPS 双向认证,即对 Web 服务器与浏览器同时进行认证,而建立的 HTTPS 安全连接。
最近,我在 Linux 下也配置了下Apache的 HTTPS,并将配置过程和遇到的问题记录了一下。
配置环境∙Web 服务器系统:VMware Workstation 6.0.2,Debian Linux 5.0.2,kernel=2.6.26-2-686∙Web 服务器:Apache 2.2.9-10∙Web 浏览器系统:Windows XP Professional∙Web 浏览器:Firefox 3.0.11Linux Apache的基本配置现在 Linux 下较新的Apache配置,要比 Windows 下的配置方便、灵活的多。
比如,我的 Debian 5 下的Apache2 包安装后,就将Apache的配置文件放在:/etc/apache2目录下,并按照 Linux 下经典的:xxx-available,xxx-enabled,xxx.d目录来组织配置文件,看到这里有没有想到 Emacs 的配置文件组织方式呢?(*^_^*)。
玩 Linux 的人看到这里,大多都能猜地出 Linux Apache是怎么组织的。
下面简单列举一下Apache配置文件的组织结构:∙apache2.conf:Apache的入口配置文件,包含其它配置文件的主控文件∙conf.d/:包含一些零碎的配置,一般不和具体的 mod 相关,是全局性质的,比如:字符集 charset、安全选项 security。
∙ports.conf:设置Apache的监听端口,默认时,HTTP 为 80,HTTPS 为443。
∙envvars:导出一些环境变量,比如:∙export APACHE_RUN_USER=www-data∙export APACHE_RUN_GROUP=www-data∙export APACHE_PID_FILE=/var/run/apache2.pid∙httpd.conf:额外的用户设置的配置,默认里面内容为空。
阿里云服务器apache配置SSL证书成功开启Https(记录趟过的各种坑)
阿⾥云服务器apache配置SSL证书成功开启Https(记录趟过的各种坑)环境:步骤:申请证书(某度很多教程的,⼤家⾃⾏搜索)上传证书登陆阿⾥云控制台=》安全(云盾)=》CA证书服务=》上传原有证书(也可以直接买阿⾥云的证书,这样就不⽤上传,不过个⼈⽹站⼀般是申请免费的证书)开启服务器443端⼝(https默认端⼝)阿⾥云控制台=》云计算基础服务=》云服务器ECS=》⽹络和安全=》安全组,没有安全组的创建⼀个安全组,有的直接选择相应安全组,点击配置规则=》添加安全组规则(把80端⼝和443端⼝添加进安全组,授权对象填0.0.0.0/0)开启apache相应配置#修改httpd.conf⽂件LoadModule ssl_module modules/mod_ssl.soInclude conf/extra/httpd-ssl.confLoadModule rewrite_module#去掉上⾯三⾏前的"#"保存退出在apache⽬录下的conf⽬录下新建⼀个cert⽬录,将你的证书⽂件放在这⾥⾯开启php的openssl模块,在phpstudy的“php扩展及设置”⾥⾯开启即可修改httpd-ssl.conf⽂件,保存退出在..\Apache\conf\extra⽬录下,打开httpd-ssl.conf⽂件(注:先备份⼀遍,以免出错,因为这个⽂件的错误我重装phpstuy不下10回)在⽂件⾥定位到 Listen 443 这句话这⾥,把从这句话到这个⽂件结尾的⽂本全部注释掉或者删除掉,替换成以下代码Listen 443 //这⾥强调⼀下,如果Listen 443这句代码在这个⽂件⾥重复出现了,即重复监听,apache会报错,然后不能启动SSLStrictSNIVHostCheck offSSLCipherSuite AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULLSSLProtocol all -SSLv2 -SSLv3<VirtualHost *:443>#这⾥的路径设置你的⽹站根⽬录DocumentRoot "C:\phpStudy\PHPTutorial\WWW"#这⾥替换成你的域名ServerName #这⾥替换成你的域名ServerAlias #这⾥的路径设置你的⽹站根⽬录<Directory "C:\phpStudy\PHPTutorial\WWW">Options FollowSymLinks ExecCGIAllowOverride AllOrder allow,denyAllow from allRequire all granted</Directory>SSLEngine on#你的公钥⽂件SSLCertificateFile "C:/phpStudy/PHPTutorial/Apache/conf/cert/server.crt"#你的私钥⽂件(有的机构命名为private或者以你的域名为⽂件名命名)SSLCertificateKeyFile "C:/phpStudy/PHPTutorial/Apache/conf/cert/server.key"#证书链⽂件(有的机构命名为CA)我尝试过注释掉这个选项,结果apache不能运⾏SSLCertificateChainFile "C:/phpStudy/PHPTutorial/Apache/conf/cert/chain.crt"</VirtualHost>重启apache,看看能不能正常启动,如果有异常,尝试把第4步中httpd-ssl.conf代码恢复注释(把#重新加上去,保存退出),再次重启apache,如果此时能够正常启动,则说明httpd-ssl.conf⽂件中有错误(是不是重复监听了?证书路径对不对?证书是否有效?),请认真检查,直到能够正常启动apache打开hosts⽂件我的hosts⽂件在C:\Windows\System32\drivers\etc⽬录下⽤记事本打开,在127.0.0.1 localhost下⾯添加⼀句话:127.0.0.1 //这⾥替换成你的域名保存退出保存退出重启apache启动浏览器检查是否可以访问localhost 及你的域名,并且域名头部标志为https。
ubuntu下apache配置https且强制http转向为https
ubuntu下apache配置https且强制http转向为https1.ubuntu下的apache2安装sudo apt-get install apache2首先ubuntu下apache文件分布和windos下不一样我通过apt-get安装- 默认站点在 /var/www/- 配置文件在 /etc/apache2/- 日志在 /var/log/apache/- 启动脚本是 /etc/init.d/apache2其中 etc/apache2中的配置文件又有几个文件夹与文件apache2.conf:Apache的主要配置文件,包含全局配置。
envvars:Apache2环境变量设置。
ports.conf:配置Apache监听的端口。
mods-available:这个目录包含模块和模块配置文件,不是所有的模块都有配置文件。
mods-enabled:持有/etc/apache2/mods-available目录下文件的链接,当该目录下有一个模块文件和其配置文件,那么Apache 重启后该模块将生效。
sites-available:这个目录包含Apache虚拟主机的配置文件。
虚拟主机允许Apache配置多个站点并为每个站点配置不同的参数。
后面下面配置的时候会配置80端口的http重定向为443的https。
sites-enabled:持有/etc/apache2/sites-available目录下文件的链接。
当Apache重启后,该目录中包含的站点将会被激活。
2.ssl配置安装opensslsudo apt-get install openssl开启ssl模块输入sudo a2enmod ssl无效则输入下面两个命令sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.loadsudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf获取证书百度一下就能知道,我因为用的腾讯云,直接在腾讯云上一件申请了一年的免费证书会有3个文件1_root_bundle.crt2_xxx.crt3_xxx.key配置HTTPS(SSL)1.进入/etc/apache2/ports.conf查看是否有Listen 80Listen 443没有就添加上去2.配置ssl虚拟站点上文安装完后,会在/etc/apache2/sites-available/目录下生成一个缺省的default-ssl文件。
Apache2.2 openssl配置Https应用
Apache2.2 openssl配置Https应用1、关于Apache网上有很多关于Apache配置Http,Https 的帖子,写的各式各样大同小异。
但说到都比较浅,至少我感觉没有说明白原理。
当然,这里我也只是针对我现在的理解来说一下Apache Https那些事。
通常我们开发的web项目都要部署在weblogic中间件上,然后为了网络安全,在停火区搭建web server用于请求转发。
最常用的web server之一就是Apache。
如果是金融领域的应用的话,基本上都是要配置Https的,以防敏感数据被窃取。
Apache有很多版本,有些版本只能配置Http的应用,要想配置Https的话,需要下载专门的Apache,我这里用的是:httpd-2.2.21-win32-x86-openssl-0.9.8r.msi,使用这个软件可以自制证书,可以配置Https。
(虽然是32位的,也可以安装在64位的windows上,我也没找到专门的64位软件)。
2、关于证书部署Https应用需要证书,可以自制也可以购买。
当然,如果你的应用是公司级的又是金融领域的,那基本上要购买了,比如天威诚信的证书。
因为自制证书可能被黑客替换,用户体验也不好每次浏览器都会提示不安全证书。
自制证书步骤:进入D:\Apache2.2\bin执行以下命令:#生成rsa私钥opensslgenrsa -des3 -out root.key#配置环境变量,制定openssl.cfg配置文件的路径setOPENSSL_CONF=C:\cert\OpenSSL-Win64\bin\openssl.cfg#生成CA的crt,用来签署下面的root.csr文件,有效期10年openssl req -new -x509 -key root.key -out ca.crt -days 3650#生成的csr文件交给CA签名后形成服务器自己的证书.重要:有一个common name可以写域名,如果为了https申请,这个必须和域名吻合,否则会引发浏览器报警openssl req -new -key root.key -out root.csr#输入key的密钥后,完成证书生成.-CA 选项指明用于被签名的csr证书,-CAkey选项指明用于签名的密钥,-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成.#最后生成了私用密钥:root.key 和自己的SSL证书root.crtopenssl x509 -req -days 3650 -in root.csr -CA ca.crt -CAkey root.key -CAcreateserial -out root.crt#证书合并:cat root.key root.crt > root.pem #linuxcopy /b /y root.key+root.crt root.pem #windows#统一接入网关密码设置为:admin123C:\cert\OpenSSL-Win64\bin>openssl pkcs12-export -in root.pem -inkey root.key -out root.pfx3、配置Https背景:Weblogic10.3.6,Apache2.2 ,windows2008EnterpriseApache安装在D://Apache2.2,weblogic安装在Redhat6上。
Linux下apache配置https方法教程
Linux下apache配置https方法教程Linux下apache怎么配置https访问,Linux下apache配置https方法教程,apache配置https方法步骤介绍。
1.安装Openssl要使Apache支持SSL,需要首先安装Openssl支持。
下载Openssl:/source/ ;tar -zxf openssl-1.0.1h.tar.gz //解压安装包;cd openssl-1.0.1h //进入已经解压的安装包;./config //配置安装,推荐使用默认配置;make && make install //编译及安装;openssl默认将被安装到/usr/local/ssl当然这里的路径也可以指定安装路径;2. 安装Apache./configure --prefix=/usr/local/apache --enable-so --enable-ssl--with-ssl=/usr/local/ssl --enable-mods-shared=all //配置安装,推荐动态编译模块。
make&& make install动态编译Apache模块,便于模块的加载管理。
Apache 将被安装到/usr/local/apache3.申请证书去沃通WoSign官网申请一张EV SSL证书,申请成功后,会得到一个有密码的压缩包文件,输入证书密码后解压得到五个文件:forApache、forIIS、forNgnix、forTomcat、forOther Server,这个是证书的几种格式,Apache上需要用到forApache格式的证书。
4.安装ssl证书a、打开apache安装目录下conf目录中的httpd.conf文件,找到#LoadModulessl_module modules/mod_ssl.so#Includeconf/extra/httpd_ssl.conf删除行首的配置语句注释符号“#”保存退出。
Apache+PHP配置HTTPS(Windows Server 2016 x64)
下载地址PHP:/download#Releases选择x64 Thread Safe,Zip格式Apache:https:///download/https://aka.ms/vs/15/release/VC_redist.x64.exe(VC库,下载完后直接双击安装)存储结构C:\NJ\Apache\PHP\MySQL\Web\WordPressPHP1.打开PHP目录下的"php.ini-production"文件,另存为"php.ini"。
2. 修改插件目录(搜索关键词: extension_dir)extension_dir = "C:\NJ\PHP\ext"ApacheP:每个需要编写的配置文件,在操作前,都先将该配置文件内的所有"c:/Apache24"替换为"C:/NJ/Apache"1.打开"C:\NJ\Apache\conf\httpd.conf",修改参数"ServerName"、"ServerAdmin"。
(若没有注册ServerName处域名可填写IP,若填写局域网IP则只有局域网用户可访问。
)2. 修改参数"DocumentRoot"(网站的根目录)DocumentRoot "C:/NJ/Web"<Directory "C:/NJ/Web">3.找到LoadModule区域,添加如下信息:(注意查看PHP目录下的dll文件版本)LoadModule php7_module C:\NJ\PHP\php7apache2_4.dllPHPIniDir "C:\NJ\PHP"<FilesMatch "\.(php|phtml|html|htm)$">SetHandler application/x-httpd-php</FilesMatch>4. 修改默认检索index.html为index.php。
apache sslhonorcipherorder参数
apache sslhonorcipherorder参数一、简介Apache HTTP Server是一款广泛使用的Web服务器软件,支持SSL/TLS加密协议以提供安全的数据传输。
在Apache中,SSLHonorCipherOrder参数用于控制服务器如何处理SSL/TLS加密策略的优先级。
二、参数说明SSLHonorCipherOrder参数是一个指令,用于启用或禁用服务器按照SSL证书加载的策略顺序来处理ciphersuite(加密套件)。
这个参数默认为On,表示服务器会根据SSL证书中的优先级规则来选择ciphersuite。
如果设置为Off,则服务器会使用默认的ciphersuite 列表,不考虑证书中的优先级规则。
三、影响与应用SSLHonorCipherOrder参数在许多情况下非常重要,因为它直接影响到Web服务器的安全性。
当客户端和服务器在SSL/TLS协议上协商加密策略时,不同的加密套件可能有不同的安全性和性能表现。
客户端可能会根据安全性需求和当前系统环境提供不同的加密套件。
在这种情况下,服务器需要按照证书中的优先级规则来选择最合适的加密套件。
在实际应用中,许多企业使用的证书是由信任的证书颁发机构(CA)签发的,这些证书中包含了加密套件的优先级规则。
如果SSLHonorCipherOrder参数设置为On,服务器将遵循这些规则。
如果设置为Off,服务器可能会使用默认的ciphersuite列表,这可能会降低安全性。
四、示例配置在Apache配置文件中,可以通过以下方式启用或禁用SSLHonorCipherOrder参数:启用:```arduino```禁用:```arduino```请注意,这只是简单的示例配置,实际配置可能需要更多的SSL/TLS设置和相关指令。
建议在进行任何更改之前备份原始配置文件,并确保了解相关的影响。
五、总结Apache的SSLHonorCipherOrder参数是用于处理SSL/TLS加密策略优先级的关键设置。
Apache, IIS,Tomcat,Nginx设置http跳转到https方法
Apache, IIS,Tomcat,Nginx设置http跳转到https方法怎么设置http跳转到https?在为网站部署沃通SSL证书后,可以实现https加密访问,但是网站的用户往往习惯了http访问,这个时候我们就需要设置访问http时自动跳转到https。
下面收集了几种常见的服务器环境下设置http跳转到https方法,供大家参考:1、Apache设置http跳转到https(1)Apache环境下实现整站http自动跳转到https需在网站的配置文件的标签内,键入以下内容:(2)如果对某个目录做https强制跳转,则复制以下代码:(3)如果只需要对某个网页进行https跳转,可以使用redirect 301来做跳转:redirect 301 /你的网页https://你的主机+网页2、IIS设置http跳转到httpsIIS版本下,6.0和7.0及以上版本的设置方法有区别,IIS6.0中实现http跳转https方法是修改以下文件:C:\WINDOWS\Help\iisHelp\common\403-4.htm。
IIS7.0及以上版本是路径:C:\inetpub\custerr\zh-CN\403.htm,修改的内容如下图:注意:IIS6中,站点属性-》目录安全性-》编辑中把“要求安全通道(SSL)”勾选上即可。
IIS7、IIS8中,SSL设置>把“要求SSL”勾选即可。
3、Tomcat设置http跳转到httpsTomcat 环境下设置http跳转https需要做两个地方改动:(1)server.xml 中的端口要改成对应的“443”端口(2)要在web.xml配置文件中添加节点代码,如下:4、Nginx设置http跳转到httpsNginx环境下设置http跳转https需在配置80端口的文件里面,写入以下内容即可。
单独页面通用代码段,在需要强制为https的页面上加入该代码进行处理个人网站使用沃通免费SSL证书测试更方便。
phpstudy环境Apache配置下实现https访问和301重定向
phpStudy 2016环境下安装SSL证书教程题外话:在网站上安装SSL证书,首先你要有这个证书,此教程的用到的私钥server.key,证书server.crt和根证书ca.crt都是自己做的,具体看“000Windows系统下制作公钥私钥ssl 证书.doc”文档。
教程开始:以下都是在:Phpstudy2016 Apache环境下第一种方法(简单,快速,推荐)第一步:【打开phpstudy】》【其他选项菜单】》【PHP扩展】》【php-openssl】前面勾选上。
第二步:【打开phpstudy】》【其他选项菜单】》【站点域名管理】》【站点域名设置】网站域名添127.0.0.1(根据需要设置)第三步:把server.crt ca.crt和server.key三个文件后放到d:/ssl 目录下。
第四步:打开D:/phpStudy/Apache/conf/httpd.conf在最后面添加SSL配置.Listen 443<VirtualHost *:443>DocumentRoot "D:/phpStudy/WWW"ServerName 127.0.0.1ServerAlias 127.0.0.1SSLEngine onSSLCertificateFile "d:/ssl/server.crt"SSLCertificateKeyFile "d:/ssl/server.key"SSLCertificateChainFile "d:/ssl/ca.crt"</VirtualHost>完成以上配置后,重启Apache,没错误的话,就可以用http://或https://开头访问如果此时能够正常启动,则说明添加的配置有错误(是不是重复监听了?证书路径对不对?证书是否有效?),请看错误日志(D:\phpStudy\Apache\logs\error.log),直到能够正常启动apache第五步:http301重定向到https完成第四步,还没有大功告成,因为访问http时还不会自动在网址前加https,怎么办?继续往下看——创建一个文件名为.htaccess的文件放在网站根目录,可以用记事本新建一个空白文件,保存另存为时,在文件类型上选择所有文件就可以了。
Apache 配置支持HTTPS的SSL证书-生成CA证书
Apache 配置支持HTTPS的SSL证书在设置Apache + SSL之前, 需要做:安装Apache, 下载安装Apache时请下载带有ssl版本的Apache安装程序.并且ssl需要的文件在如下的位置:[Apache安装目录]/modules/ mod_ssl.so[Apache安装目录]/bin/ openssl.exe, libeay32.dll, ssleay32.dll, f [Apache安装目录]/conf/ f创建SSL证书(注意,我下载的是PHPStudy里面自带了openssl,但是bin目录下没有f,需要将conf下的f拷贝一份到bin目录下,但总体原理一样)一.生成一个带CA(Certificate Authority)授权的证书打开CMD,进入到Apache安装目录下的bin目录下:步骤一:执行命令,生成私钥:openssl genrsa -out tian_server.key 2048(RSA密钥对的默认长度是1024,取值是2的整数次方,并且密钥长度约长,安全性相对会高点)。
完成密钥server.key生产完毕后进行步骤二操作。
步骤二:配置f请确保以下数据这里所要求的值default_md = md5 #默认是default,会触发[default digest message is not supported ]req_extensions = v3_req #默认签名被注释了[ v3_req ]basicConstraints = CA:FALSEkeyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names #此项不存在,需要添加[ alt_names ] #此项不存在,需要添加,注意DNS.xDNS.1 = #自定义DNS.2 = #自定义DNS.3 = #自定义DNS.4 = #自定义DNS.5 = #自定义DNS.6 = #自定义然后创建目录和文件demoCA/newcerts/private/index.txtindex.txt.attrserial #此文件初始值输入00即可生成Certificate Signing Request文件,用于向CA机构申请证书:openssl req -new -key tian_server.key -out tian_server.csr -config f (如果不加-config f参数的话,常会报Unable to load config info from .../ssl/f)之后就会要求输入一系列的参数:Country Name (2 letter code) [AU]:CN ISO 国家代码(只支持两位字符)State or Province Name (full name) [Some-State]:ZJ 所在省份Locality Name (eg, city) []:HZ 所在城市Organization Name (eg, company): 公司名称Organizational Unit Name (eg, section) []: 组织名称Common Name (eg, YOUR name) []: 申请证书的域名(建议和httpd.conf中serverName必须一致)Email Address []:admin@ 管理员邮箱Please enter the following 'extra' attributes to be sent with your certificate re quest A challenge password []: 交换密钥An optional company name []:注:Common Name建议和httpd.conf中serverName必须一致,或者与f 中的alt_names中的一个域名保持一致,否则证书有可能申请不到,并且启动apache 时错误提示为:server RSA certificate CommonName (CN) `Kedou' does NOT match server name!?)我们得到CSR之后,第三方CA机构申请通过后,会把生成好下发给你,如果你选择了第三方机构,可以跳过步骤三和四,直接到步骤五。
Apache 搭建https环境
開始安裝 mod_ssl1. 先到右下角工作列圖示 Apache Monitor 先 STOP Apache2. 解壓縮 Apache_2.0.59-Openssl_0.9.8b-Win32.zip (放桌面就好了)將裡面的./Apache_2.0.59-Openssl_0.9.8d-Win32/bin/Apache.exe./Apache_2.0.59-Openssl_0.9.8d-Win32/bin/ssleay32.dll./Apache_2.0.59-Openssl_0.9.8d-Win32/bin/libeay32.dll3 個檔案複製到 X:/AppServ/Apache2/bin/ 裡面, 取代 Apache.exe將./Apache_2.0.59-Openssl_0.9.8d-Win32/conf/ssl.conf複製到 X:/AppServ/Apache2/conf/ 裡面3. 開啟 X:/AppServ/Apache2/conf/ssl.conf找到複製內容到剪貼板代碼:# General setup for the virtual hostDocumentRoot "你的網頁根目錄可以找 httpd.conf 下的 DocumentRoot" ServerName 你的 domain name:443ServerAdmin 你的 emailErrorLog logs/error_logTransferLog logs/access_log修改一下你的網站資料4. 接下來我們要產生 SSL連線(HTTPS)時所需要加密的 key 及身份驗證用的CA。
首先,找個地方解開 Openssl-0.9.8b-Win32.zip比方說 D:\OpenSSL ,接著再把 f 放到該目錄下,並且找到下列地方將它修改成:複製內容到剪貼板代碼:dir = sslcerts = $dir\\certscrl_dir = $dir\\crldatabase = $dir\\index.txtnew_certs_dir = $dircertificate = $dir\\cacert.pemserial = $dir\\serialcrl = $dir\\crl.pemprivate_key = $dir\\privkey.pemRANDFILE = $dir\\privkey.rnd如果你無法開啟 f, 先開啟 UltraEdit 或是新增記事本, 將f 拉到裡面就可以了還有別忘了把這個檔案裡的x509extensions這一行在開頭加上 # 把它註解掉。
linux apache 配置 http和https 访问
linux apache 配置http和https 访问1、安装openssl:#tar zxvf openssl-0.9.81.tar.gz#cd openssl-0.9.81#./config#make#make install2、安装apache:#tar zxvf httpd-2.0.63.tar.gz#cd httpd-2.0.63#./configure --prefix=/usr/local/apache/httpd --enable-ssl=static --with-ssl=/usr/local/ssl#make#make install此步骤在/apache/httpd目录中安装httpd服务(通过参数--prefix指定),同时使用--with-ssl指定刚才所安装OpenSSL的路径,用于将mod_ssl静态的编译到httpd服务中。
修改3、生成证书:openssl genrsa 1024 > server.keyopenssl req -new -key server.key > server.csr填写相关信息:Country Name (2 letter code) [GB]:CNState or Province Name (full name) [Berkshire]:BEIJINGLocality Name (eg, city) [Newbury]:BEIIJINGOrganization Name (eg, company) [My Company Ltd]:TESTOrganizational Unit Name (eg, section) []:TESTCommon Name (eg, your name or your server's hostname) []:TESTEmail Address []:TEST@openssl req -x509 -days 365 -key server.key -in server.csr > server.crt4、配置ssl:修改conf/httpd.conf文件将httpd.conf 中的Include conf/extra/httpd-ssl.conf 打开修改conf/extra/httpd-ssl.conf文件找到SSLCertificateFile 和SSLCertificateKeyFile 项将上面生成的测试证书路径填写完整5、配置域名:修改conf/httpd.conf文件将httpd.conf 中的Include conf/extra/httpd-vhost.conf 打开修改conf/extra/httpd-vhost.conf 文件配置需要访问的域名注:由于证书为我们自己测试创建,如有需要应到指定公司去认证。
详解在Ubuntu上的Apache配置SSL(https证书)的正确姿势
详解在Ubuntu上的Apache配置SSL(https证书)的正确姿势⾸先看⼀下阿⾥云官⽅的教程:⽂件说明:1. 证书⽂件xxxxxx.pem,包含两段内容,请不要删除任何⼀段内容。
2. 如果是证书系统创建的CSR,还包含:证书私钥⽂件xxxxxxxx.key、证书公钥⽂件public.pem、证书链⽂件chain.pem。
( 1 ) 在Apache的安装⽬录下创建cert⽬录,并且将下载的全部⽂件拷贝到cert⽬录中。
如果申请证书时是⾃⼰创建的CSR⽂件,请将对应的私钥⽂件放到cert⽬录下并且命名为xxxxxxxx.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:+MEDIUMSSLHonorCipherOrder on# 证书公钥配置SSLCertificateFile cert/public.pem# 证书私钥配置SSLCertificateKeyFile cert/xxxxxxx.key# 证书链配置,如果该属性开头有 '#'字符,请删除掉SSLCertificateChainFile cert/chain.pem( 4 ) 重启 Apache。
Apache实现https证书密钥验证
Apache实现https证书密钥验证基于Apache的https(证书,密钥)的实现1、安装mod_ssl模块,让Linux支持SSL:yum install mod_ssl -y2、创建证书和密钥文件:cd /etc/pki/tls/certsmake httpd.crt //证书文件的名字可以随便写,扩展名不要变。
最后会生成两个文件,一个证书文件.crt结尾,一个密钥.key结尾。
------------------------------------------------------------------------------------[root@rhce certs]# make httpd.crtumask 77 ; \/usr/bin/openssl genrsa -des3 1024 > links.keyGenerating RSA private key, 1024 bit long modulus ...........................++++++ .........................++++++e is 65537 (0x10001)Enter pass phrase: //密码。
Verifying - Enter pass phrase: //确认密码和上面相同。
umask 77 ; \/usr/bin/openssl req -utf8 -new -key links.key -x509 -days 365 -out lis.crt-set_serial 0Enter pass phrase for httpd.key: //httpd.key 文件密码You are about to be asked to enter information that will be incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [GB]:GBState or Province Name (full name) [Berkshire]:JIANGSULocality Name (eg, city) [Newbury]:XUZHOUOrganization Name (eg, company) [My Company Ltd]:QINGNIAOOrganizational Unit Name (eg, section) []:Common Name (eg, your name or your server's hostname) []://真实域名Email Address []:root@------------------------------------------------------------------------------------3、编辑配置文件:/etc/http/conf .d/ssl.conf修改证书和密钥文件的路径为我们创建的证书和密钥的所在位置。
如何配置基于apache且用https访问的SVN
在windows下配置基于apache的svn,带openssl0.9.8。
可通过http或者https 访问,或者只能通过https访问。
此文档是配置后根据记忆所写,可能有缺少的地方,还希望广大朋友给予指正。
且只适合于自带openssl的apache。
一、下载和安装(一)下载A.服务器端下载1、下载apache,在此我下载的是apache-2.2.11-win32-x86-openssl-0.9.8,该版本的apache自带了openssl。
2、下载subversion,在此配置文档里我用的是1.6.4。
可在官网上下载。
B.客户端下载下载TortoiseSVN,如何希望客户端用汉语的话,可以下载一个对应的语言包,在此文档中用的是TortoiseSVN-1.4.4和LanguagePack-1.4.4。
(二)安装1、先安装apache和subversion,再安装TortoiseSVN和LanguagePack。
(因为如果服务器端也需要装TortoiseSVN的话,先装了TortoiseSVN再装apache和subversion会导致版本库访问错误。
)注:如果安装完apache之后出了no services installed的情况,请在cmd里进入到apache的bin目录,然后运行httpd.exe -k install -napache2 即可。
apache2根据自己apache的版本改变。
2、将TortoiseSVN的语言设置为中文。
在桌面上点击右键,出现上图的菜单,点击进入,刚出现下图的画面。
选择“中文(简体)即可”。
二、建配置库及用户名。
1、建配置库在cmd命令里进入subversion的bin目录,然后输入svnadmin create d:\svn\test注:上层目录d:\svn\test必须存在。
即在d盘下建svn\test文件夹。
运行此命令即建好一个库。
打开之后可看到test空文件中多了下图所示的那些文件。
Apache配置多个https协议(ssl加密)站点
Apache配置多个https协议(ssl加密)站点Apache 配置多个https协议(ssl加密)站点工作中经常会遇到多个站点实现https访问,并指向同一个网页,本文将详解如何在Centos 环境下配置Apache多站点实现HTTPS访问。
准备工作OS:CentOS release 6.8 (Final)Web:Apache安装Apache1、安装Apache[root@node1 ~]# yum install httpd -y2、启动服务[root@node1 ~]# service httpd startStarting httpd: [ OK ][root@node1 ~]#3、修改测试页面[root@node1 ~]# cat /var/www/html/index.html<h1>Apache Test Page~</h1>4、测试访问Apache 配置多个HTTPS站点实现HTTPS访问1、安装SSL模块[root@node1 ~]# yum install mod_ssl -y #mod_ssl模块,是apache的https传输安全ssl支持模块,必须安装2、检测[root@node1 ~]# cd /etc/httpd/modules/[root@node1 modules]# ll | grep ssl-rwxr-xr-x 1 root root 181872 Oct 20 2017 mod_ssl.so3、上传证书文件这里我们可以到各大厂商去申请免费证书,可满足个人网站的需求,如企业网站,建议购买企业收费证书;[root@node1 ~]# cd /etc/httpd/ #证书文件通常也可放到linux的/etc/pki/tls/certs目录下[root@node1 httpd]# mkdir ssl/default[root@node1 httpd]# cd ssl/default[root@node1 default]# rz[root@node1 default]# lltotal 12-rw-r--r-- 1 root root 1683 Apr 13 22:26 1_root_bundle.crt-rw-r--r-- 1 root root 2008 Apr 13 22:26 2_.crt -rw-r--r-- 1 root root 1678 Apr 13 22:26 3_.key [root@node1 default]#4、修改配置[root@node1 ~]# cd /etc/httpd/conf.d/[****************]#lsREADME ssl.conf welcome.conf[****************]#vim ssl.conf #安装mod_ssl模块后,该ssl.conf会自动生成,里面有配置443虚拟主机的案例文件参见附件给出了mod_ssl的原始文件LoadModule ssl_module modules/mod_ssl.soListen 443<VirtualHost *:443>DocumentRoot "/var/www/html"ServerName SSLEngine onSSLCertificateFile/etc/httpd/ssl/default/2_.crtSSLCertificateKeyFile/etc/httpd/ssl/default/3_.keySSLCertificateChainFile/etc/httpd/ssl/default/1_root_bundle.crt</VirtualHost>配置文件参数说明LoadModule 加载SSL模块Listen 监听443端口DocumentRoot 网页目录ServerName 站点域名SSLEngine on 启用SSL功能SSLCertificateFile 证书文件SSLCertificateKeyFile 私钥文件SSLCertificateChainFile 证书链文件5、重启服务[root@node1 ~]# httpd -tSyntax OK可以先试用httpd -t 检测一下配置文件是否正确,然后再重启服务;[root@node1 ~]# service httpd restartStopping httpd: [ OK ]Starting httpd: [ OK ]6、检测端口是否监听[****************]#ss-ntlState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 128 *:80 *:*LISTEN 0 128 *:22 *:*LISTEN 0 100 127.0.0.1:25 *:*LISTEN 0 128 *:443 *:*[****************]#7、测试访问建议使用google浏览器进行测试访问,f12查看,会显示“This page is secure (valid HTTPS).”,说明证书配置正确;Apache 配置多个HTTPS站点配置多个HTTPS站点1、上传证书文件[root@node1 ~]# cd /etc/httpd/ssl/[root@node1 ssl]# mkdir web[root@node1 ssl]# cd web/[root@node1 web]# rz2、修改配置文件修改的是ssl.confLoadModule ssl_module modules/mod_ssl.soListen 443NameVirtualHost *:443 #配置多个https站点,该行一定要加入# 第一个虚拟主机<VirtualHost *:443>DocumentRoot "/var/www/html"ServerName SSLEngine onSSLCertificateFile /etc/httpd/ssl/default/2_.crt SSLCertificateKeyFile/etc/httpd/ssl/default/3_.keySSLCertificateChainFile/etc/httpd/ssl/default/1_root_bundle.crt</VirtualHost>#第二个虚拟主机<VirtualHost *:443>DocumentRoot "/var/www/html"ServerName SSLEngine onSSLCertificateFile/etc/httpd/ssl/web/2_.crtSSLCertificateKeyFile/etc/httpd/ssl/web/3_.keySSLCertificateChainFile/etc/httpd/ssl/web/1_root_bundle.crt</VirtualHost>3、重启服务[****************]#servicehttpdrestartStopping httpd: [ OK ]Starting httpd: [ OK ][****************]#4、测试访问Apache 配置多个HTTPS站点Apache 配置多个HTTPS站点到这里,Apache多站点https就实现了~附件1:yum安装mod_ssl模块后生成的配置完成2个https网站的ssl文件/etc/httpd/conf.d/ssl.conf文件:## This is the Apache server configuration file providing SSL support.# It contains the configuration directives to instruct the server how to# serve pages over an https connection. For detailing information about these# directives see <URL:>## Do NOT simply read the instructions in here withoutunderstanding# what they do. They're here only as hints or reminders. If you are unsure# consult the online docs. You have been warned.#LoadModule ssl_module modules/mod_ssl.so## When we also provide SSL we have to listen to the# the HTTPS port in addition.#Listen 443NameVirtualHost *:443#### SSL Global Context#### All SSL configuration in this context applies both to## the main server and all SSL-enabled virtual hosts.### Pass Phrase Dialog:# Configure the pass phrase gathering process.# The filtering dialog program (`builtin' is a internal# terminal dialog) has to provide the pass phrase on stdout.SSLPassPhraseDialog builtin# Inter-Process Session Cache:# Configure the SSL Session Cache: First the mechanism# to use and second the expiring timeout (in seconds).SSLSessionCache shmcb:/var/cache/mod_ssl/scache(51 2000)SSLSessionCacheTimeout 300# Semaphovre:# Configure the path to the mutual exclusion semaphore the# SSL engine uses internally for inter-process synchronization.SSLMutex default# Pseudo Random Number Generator (PRNG):# Configure one or more sources to seed the PRNG of the # SSL library. The seed data should be of good random quality.# WARNING! On some platforms /dev/random blocks if not enough entropy# is available. This means you then cannot use the /dev/random device# because it would lead to very long connection times (as long as# it requires to make more entropy available). But usually those# platforms additionally provide a /dev/urandom device which doesn't# block. So, if available, use this one instead. Read the mod_ssl User# Manual for more details.SSLRandomSeed startup file:/dev/urandom 256SSLRandomSeed connect builtin#SSLRandomSeed startup file:/dev/random 512#SSLRandomSeed connect file:/dev/random 512#SSLRandomSeed connect file:/dev/urandom 512## Use "SSLCryptoDevice" to enable any supported hardware # accelerators. Use "openssl engine -v" to list supported# engine names. NOTE: If you enable an accelerator and the # server does not start, consult the error logs and ensure# your accelerator is functioning properly.#SSLCryptoDevice builtin#SSLCryptoDevice ubsec#### SSL Virtual Host Context##<VirtualHost *:443># General setup for the virtual host, inherited from global configurationDocumentRoot"/var/www/html/qiangshangkeji/web/web/weixinpronew.qiangs "ServerName :443# 添加 SSL 协议支持协议,去掉不安全的协议SSLProtocol all -SSLv2 -SSLv3# 修改加密套件如下SSLCipherSuiteHIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIU MSSLHonorCipherOrder on# 证书公钥配置SSLCertificateFile /etc/pki/tls/certs/public.pem# 证书私钥配置SSLCertificateKeyFile/etc/pki/tls/certs/215024286030114.key# 证书链配置,如果该属性开头有 '#'字符,请删除掉SSLCertificateChainFile /etc/pki/tls/certs/chain.pem</VirtualHost><VirtualHost *:443># General setup for the virtual host, inherited from global configurationDocumentRoot"/var/www/html/qiangshangkeji/web/web/weixin.qiangshangke "ServerName :443# 添加 SSL 协议支持协议,去掉不安全的协议SSLProtocol all -SSLv2 -SSLv3# 修改加密套件如下SSLCipherSuiteHIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIU MSSLHonorCipherOrder on# 证书公钥配置SSLCertificateFile/etc/pki/tls/certs//public.pem # 证书私钥配置SSLCertificateKeyFile/etc/pki/tls/certs//215024163410114. key# 证书链配置,如果该属性开头有 '#'字符,请删除掉SSLCertificateChainFile/etc/pki/tls/certs//chain.pem </VirtualHost>附件2:yum安装mod_ssl模块后生成的配置完成ssl文件/etc/httpd/conf.d/ssl.conf文件原始文件:## This is the Apache server configuration file providingSSL support.# It contains the configuration directives to instruct the server how to# serve pages over an https connection. For detailing information about these# directives see <URL:>## Do NOT simply read the instructions in here without understanding# what they do. They're here only as hints or reminders. If you are unsure# consult the online docs. You have been warned.#LoadModule ssl_module modules/mod_ssl.so## When we also provide SSL we have to listen to the# the HTTPS port in addition.#Listen 443NameVirtualHost *:443#### SSL Global Context#### All SSL configuration in this context applies both to## the main server and all SSL-enabled virtual hosts.### Pass Phrase Dialog:# Configure the pass phrase gathering process.# The filtering dialog program (`builtin' is a internal# terminal dialog) has to provide the pass phrase on stdout.SSLPassPhraseDialog builtin# Inter-Process Session Cache:# Configure the SSL Session Cache: First the mechanism# to use and second the expiring timeout (in seconds).SSLSessionCache shmcb:/var/cache/mod_ssl/scache(51 2000)SSLSessionCacheTimeout 300# Semaphovre:# Configure the path to the mutual exclusion semaphore the# SSL engine uses internally for inter-process synchronization.SSLMutex default# Pseudo Random Number Generator (PRNG):# Configure one or more sources to seed the PRNG of the # SSL library. The seed data should be of good random quality.# WARNING! On some platforms /dev/random blocks if not enough entropy# is available. This means you then cannot use the /dev/random device# because it would lead to very long connection times (as long as# it requires to make more entropy available). But usually those# platforms additionally provide a /dev/urandom device which doesn't# block. So, if available, use this one instead. Read the mod_ssl User# Manual for more details.SSLRandomSeed startup file:/dev/urandom 256SSLRandomSeed connect builtin#SSLRandomSeed startup file:/dev/random 512#SSLRandomSeed connect file:/dev/random 512#SSLRandomSeed connect file:/dev/urandom 512## Use "SSLCryptoDevice" to enable any supported hardware # accelerators. Use "openssl engine -v" to list supported# engine names. NOTE: If you enable an accelerator and the # server does not start, consult the error logs and ensure# your accelerator is functioning properly.#SSLCryptoDevice builtin#SSLCryptoDevice ubsec#### SSL Virtual Host Context##<VirtualHost *:443># General setup for the virtual host, inherited from global configurationDocumentRoot"/var/www/html/qiangshangkeji/web/web/weixin.qiangshangke "ServerName :443# Use separate log files for the SSL virtual host; note that LogLevel# is not inherited from httpd.conf.ErrorLog logs/ssl_error_logTransferLog logs/ssl_access_logLogLevel warn# SSL Engine Switch:# Enable/Disable SSL for this virtual host.SSLEngine on# SSL Protocol support:# List the enable protocol levels with which clients will be able to# connect. Disable SSLv2 access by default:SSLProtocol all -SSLv2# SSL Cipher Suite:# List the ciphers that the client is permitted to negotiate.# See the mod_ssl documentation for a complete list.SSLCipherSuiteDEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES# Server Certificate:# Point SSLCertificateFile at a PEM encoded certificate. If# the certificate is encrypted, then you will be prompted for a# pass phrase. Note that a kill -HUP will prompt again. A new# certificate can be generated using the genkey(1) command.#SSLCertificateFile /etc/pki/tls/certs/localhost.crtSSLCertificateFile /etc/pki/tls/certs/server.crt# Server Private Key:# If the key is not combined with the certificate, use this# directive to point at the key file. Keep in mind that if# you've both a RSA and a DSA private key you can configure# both in parallel (to also allow the use of DSA ciphers, etc.) #SSLCertificateKeyFile /etc/pki/tls/private/localhost.keySSLCertificateKeyFile /etc/pki/tls/private/server.key# Server Certificate Chain:# Point SSLCertificateChainFile at a file containing the# concatenation of PEM encoded CA certificates which form the# certificate chain for the server certificate. Alternatively# the referenced file can be the same as SSLCertificateFile # when the CA certificates are directly appended to the server# certificate for convinience.#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crtSSLCertificateChainFile /etc/pki/tls/certs/server.crt# Certificate Authority (CA):# Set the CA certificate verification path where to find CA # certificates for client authentication or alternatively one # huge file containing all of them (file must be PEM encoded)#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt# Client Authentication (Type):# Client certificate verification type and depth. Types are # none, optional, require and optional_no_ca. Depth is a # number which specifies how deeply to verify the certificate# issuer chain before deciding the certificate is not valid.#SSLVerifyClient require#SSLVerifyDepth 10# Access Control:# With SSLRequire you can do per-directory access control based# on arbitrary complex boolean expressions containing server# variable checks and other lookup directives. The syntax is a# mixture between C and Perl. See the mod_ssl documentation# for more details.#<Location />#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ # and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/ #</Location># SSL Engine Options:# Set various options for the SSL engine.# o FakeBasicAuth:# Translate the client X.509 into a Basic Authorisation. This means that# the standard Auth/DBMAuth methods can be used for access control. The# user name is the `one line' version of the client's X.509 certificate.# Note that no password is obtained from the user. Every entry in the user# file needs this password: `xxj31ZMTZzkVA'.# o ExportCertData:# This exports two additional environment variables:SSL_CLIENT_CERT and# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the# server (always existing) and the client (only existing when client# authentication is used). This can be used to import the certificates# into CGI scripts.# o StdEnvVars:# This exports the standard SSL/TLS related `SSL_*' environment variables.# Per default this exportation is switched off for performance reasons,# because the extraction step is an expensive operation and is usually# useless for serving static content. So one usually enables the# exportation for CGI and SSI requests only.# o StrictRequire:# This denies access when "SSLRequireSSL" or "SSLRequire" applied even# under a "Satisfy any" situation, i.e. when it applies access is denied# and no other module can change it.# o OptRenegotiate:# This enables optimized SSL connection renegotiation handling when SSL# directives are used in per-directory context.#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire<Files ~ "\.(cgi|shtml|phtml|php3?)$">SSLOptions +StdEnvVars</Files><Directory "/var/www/cgi-bin">SSLOptions +StdEnvVars</Directory># SSL Protocol Adjustments:# The safe and default but still SSL/TLS standard compliant shutdown# approach is that mod_ssl sends the close notify alert but doesn't wait for# the close notify alert from client. When you need a different shutdown# approach you can use one of the following variables:# o ssl-unclean-shutdown:# This forces an unclean shutdown when the connection is closed, i.e. no# SSL close notify alert is send or allowed to received. This violates# the SSL/TLS standard but is needed for some brain-dead browsers. Use# this when you receive I/O errors because of the standard approach where# mod_ssl sends the close notify alert.# o ssl-accurate-shutdown:# This forces an accurate shutdown when the connection is closed, i.e. a# SSL close notify alert is send and mod_ssl waits for the close notify# alert of the client. This is 100% SSL/TLS standardcompliant, but in# practice often causes hanging connections with brain-dead browsers. Use# this only for browsers where you know that their SSL implementation# works correctly.# Notice: Most problems of broken clients are also related to the HTTP# keep-alive facility, so you usually additionally want to disable# keep-alive for those clients, too. Use variable "nokeepalive" for this.# Similarly, one has to force some clients to use HTTP/1.0 to workaround# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and# "force-response-1.0" for this.SetEnvIf User-Agent ".*MSIE.*" \nokeepalive ssl-unclean-shutdown \downgrade-1.0 force-response-1.0# Per-Server Logging:# The home of a custom SSL log file. Use this when you want a# compact non-error SSL logfile on a virtual host basis.CustomLog logs/ssl_request_log \"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"</VirtualHost>案例:#用于建筑行业招聘求职小程序,customlog配置访问日志的目录,也就是https的来自443端口的访问目录,经过实际测试即使来自https的访问,记录的协议类型也是HTTP/1.1,与http一样,因此可以配置与80端口不同的访问日志目录来区分来自https的访问。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Apache配置HTTPS协议搭载SSl配置全过程
1.安装必要的软件
从Apache官方()下载必要的ApacheHttpServer安装包,可以直接官方提供的绑定openssl的apache.文件名是:
httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi(我用的是Apache2.2.15for windows的版本,你可以点击此处下载最新的版本进行安装,最好选择含有openssl版本的哦)
否则单独安装windows下的openssl比较麻烦,要么找到一个第三方的编译结果,要么自己编译
安装完毕后检查检查在Apache安装路径的bin下是否有以下文件:
openssl.exe
ssleay32.dll
libeay32.dll
2. 生成服务器证书
安装好在bin目录下有一个openssl.exe文件,用来生成证书和密钥。
1). 生成服务器用的私钥文件server.key
(注:在Windows操作系统环境下需先设置Openssl环境变量:在DOS命令下进入conf目录,执行命令行:set OPENSSL_CONF=..\conf\f;请在执行之前确保f存在,否则会出现:WARNING: can't open config file: /usr/local/ssl/f 信息提示。
还有在windows系统下.cnf 默认会被当成快捷方式,看不到扩展名。
)
在DOS命令下进入bin目录,执行命令行
命令:openssl genrsa 1024> server.key
说明:这是用128位rsa算法生成密钥,得到server.key文件>是输出文件的标识符这种生成方法生成的是没有密钥的私钥文件,当然,Apache提供了加入密钥(Password)的命令,就是加入参数-des3,全部的命令为:
命令:openssl genrsa 1024-des3 > server.key
使用 openssl genrsa -des3 > 1024 server.key生成私钥文件是需要输入密钥的,运行的时候会让你输入并确认你的密钥,但是在Windows环境下会导致以下错误:
错误:Apache启动失败,错误提示是:Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file .....)
原因是window下的apache不支持加密的私钥文件。
可不使用des3加密。
注:生成的证书中RSA密钥对的默认长度是1024,取值是2的整数次方。
建议使用4096以上。
图解:
1.切换到bin目录
2.设置环境变量
3.生成server.key
2). 生成未签署的server.csr
进入bin目录,执行命令行
命令:openssl req -new -key server.key > server.csr
说明:这是用步骤1的密钥生成证书请求文件server.csr, 这一步会有很多参数,需要一一输入
按提示输入一系列的参数,
Country Name (2 letter code) [AU]:CN ISO国家代码(只支持两位字符)State or Province Name (full name) [Some-State]:ZJ所在省份
Locality Name (eg, city) []:HZ所在城市
Organization Name (eg, company):SW_TECH公司名称
Organizational Unit Name (eg, section) []:SW_TECH组织名称
Common Name (eg, YOUR name) []:申请证书的域名
Email Address []:admin@ 管理员邮箱
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 交换密钥
An optional company name []: 注:Common Name必须和httpd.conf中server name必须一致,否则apache不能启动(启动apache时错误提示为:RSA server certificate CommonName (CN) `Kedou' does NOT match server name!? )3). 签署服务器证书文件server.crt
进入bin目录,执行命令行
命令:openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
说明:这是用步骤1,2的的密钥和证书请求生成证书server.crt,-days参数指明证书有效期,单位为天,x509表示生成的为X.509证书。
以上签署证书仅仅做测试用,真正运行的时候,应该将CSR发送到一个CA 返回真正的用书.网上有些文档描述生成证书文件的过程比较繁琐,就是因为他们自己建立了一个CA中心证书,然后再签署server.csr.
用openssl x509 -noout -text -in server.crt可以查看证书的内容。
证书实际上包含了Public Key.
图解:
生成CSR
生成CRT
3. 配置httpd.conf.
在conf目录下的httpd_ssl.conf文件是关于ssl的配置,是httpd.conf的一部分,在 httpd.conf中找到给文件的引用,移除对应的注释
找到一个443的虚拟主机配置项,如下:
<VirtualHost _default_:443>
SSLEngine On
SSLCertificateFile ../bin/server.crt
SSLCertificateKeyFile ../bin/server.key
#SSLCertificateChainFile ../bin//ca.crt // 暂未启用
#......
DocumentRoot "D:/programs/Apache2.2/htdocs"
ServerName :443
</VirtualHost>
移除注释行
LoadModule ssl_module modules/mod_ssl.so
这样所有的都可以通过HTTPS访问了,但是如果你想保留其他目录的访问仍然是http,那么你应该把
<VirtualHost _default_:443> 也改为 <VirtualHost :443> 此时,即便ServerName是任意的,系统仍然正常运行,仅仅Apache log
提示"does NOT match server name"
注意到ssl.conf的配置都在标签<IfDefine SSL>中,所以为了使IfDefine 指
令有效,运行apache 的时候要加上 -D SSL 参数。
apache -D SSL -k start。