马哥linux高薪中级-web服务器(续一)

  1. 云栖社区>
  2. 博客>
  3. 正文

马哥linux高薪中级-web服务器(续一)

技术小阿哥 2017-11-27 14:59:00 浏览1369
展开阅读全文

2、工作模式切换

httpd支持三种模型,即perfork、worker、event模型。 

三种模型的启动方法是不同的,perfork是默认的启动模型,通过httpd命令即可启动,可以通过rpm -ql |grep bin来看到有httpd、http.worker、http.event三个命令。 

一般来说,apache的2.2版本之前并不支持event模型,在2.4以后才开始支持event模型。 

2.1、修改配置文件

[root@37-test ~]# vi /etc/sysconfig/httpd 


2.2、去掉以下注释,并重启服务

HTTPD=/usr/sbin/httpd.worker


2.3、查看启动情况

[root@37-test ~]# ps -aux |grep http

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root      5844  0.0  0.0 175536  3844 ?        Ss   08:31   0:00 /usr/sbin/httpd.worker

apache    5847  0.0  0.0 519796  5300 ?        Sl   08:31   0:00 /usr/sbin/httpd.worker

apache    5857  0.0  0.0 519796  5288 ?        Sl   08:31   0:00 /usr/sbin/httpd.worker

apache    5884  0.0  0.0 519796  5288 ?        Sl   08:31   0:00 /usr/sbin/httpd.worker


3、常用命令

3.1、httpd命令的帮助

[root@37-test ~]# httpd -h

Usage: httpd [-D name] [-d directory] [-f file]

             [-C "directive"] [-c "directive"]

             [-k start|restart|graceful|graceful-stop|stop]

             [-v] [-V] [-h] [-l] [-L] [-t] [-S]

Options:

  -D name            : define a name for use in <IfDefine name> directives

  -d directory       : specify an alternate initial ServerRoot

  -f file            : specify an alternate ServerConfigFile

  -C "directive"     : process directive before reading config files

  -c "directive"     : process directive after reading config files

  -e level           : show startup errors of level (see LogLevel)

  -E file            : log startup errors to file

  -v                 : show version number

  -V                 : show compile settings

  -h                 : list available command line options (this page)

  -l                 : list compiled in modules

  -L                 : list available configuration directives

  -t -D DUMP_VHOSTS  : show parsed settings (currently only vhost settings)

  -S                 : a synonym for -t -D DUMP_VHOSTS

  -t -D DUMP_MODULES : show all loaded modules 

  -M                 : a synonym for -t -D DUMP_MODULES

  -t                 : run syntax check for config files


3.2、查看httpd支持的核心模块有哪些?

[root@37-test ~]# httpd -l

Compiled in modules:

  core.c

  prefork.c

  http_core.c

  mod_so.c


3.3、http -D DUMP_MODULES:显示模块支持的扩展模块

[root@37-test ~]# httpd -D DUMP_MODULES

httpd: apr_sockaddr_info_get() failed for 37-test

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Loaded Modules:

 core_module (static)

 mpm_prefork_module (static) ##使用prefork模型

 http_module (static)

 so_module (static)

 auth_basic_module (shared)

 auth_digest_module (shared)

 authn_file_module (shared)

 authn_alias_module (shared)

 authn_anon_module (shared)

 authn_dbm_module (shared)

 authn_default_module (shared)

 authz_host_module (shared)

 authz_user_module (shared)

 authz_owner_module (shared)

 authz_groupfile_module (shared)

 authz_dbm_module (shared)

 authz_default_module (shared)

 ldap_module (shared)

 authnz_ldap_module (shared)

 include_module (shared)

 log_config_module (shared)

 logio_module (shared)

 env_module (shared)

 ext_filter_module (shared)

 mime_magic_module (shared)

 expires_module (shared)

 deflate_module (shared)

 headers_module (shared)

 usertrack_module (shared)

 setenvif_module (shared)

 mime_module (shared)

 dav_module (shared)

 status_module (shared)

 autoindex_module (shared)

 info_module (shared)

 dav_fs_module (shared)

 vhost_alias_module (shared)

 negotiation_module (shared)

 dir_module (shared)

 actions_module (shared)

 speling_module (shared)

 userdir_module (shared)

 alias_module (shared)

 substitute_module (shared)

 rewrite_module (shared)

 proxy_module (shared)

 proxy_balancer_module (shared)

 proxy_ftp_module (shared)

 proxy_http_module (shared)

 proxy_ajp_module (shared)

 proxy_connect_module (shared)

 cache_module (shared)

 suexec_module (shared)

 disk_cache_module (shared)

 cgi_module (shared)

 version_module (shared)

Syntax OK


3.4、httpd -l:显示http模块的核心

[root@37-test ~]# httpd -l

Compiled in modules:

  core.c

  prefork.c

  http_core.c

  mod_so.c


3.5、httpd.worker -l

[root@37-test ~]# httpd.worker -l

Compiled in modules:

  core.c

  worker.c

  http_core.c

  mod_so.c


3.6、httpd.event -l

[root@37-test ~]# httpd.event -l

Compiled in modules:

  core.c

  event.c

  http_core.c

  mod_so.c


4、配置详解

4.1、服务运行脚本: /etc/rc.d/init.d/httpd

4.2、运行目录:/etc/httpd 

4.3、配置文件:/etc/httpd/conf/ 

                   主配置文件  httpd.conf    

                    扩展配置文件: /etc/httpd/conf.d/*.conf (优先级高于主配置文件)

4.4、目录结构

[root@37-test ~]# tree /etc/httpd/

/etc/httpd/

├── conf

│   ├── httpd.conf

│   └── magic

├── conf.d

│   └── README

├── logs -> ../../var/log/httpd

├── modules -> ../../usr/lib64/httpd/modules

└── run -> ../../var/run/httpd


5 directories, 3 files


外挂模块:/usr/lib(64)/httpd/modules/、/etc/httpd/modules/ 

强行刷新网页信息(绕过本地缓存,重新读取服务器信息):shift+f5

错误信息配置目录:/var/www/error/ 

apache提供的图标位置:/var/www/icons/ 

可执行CGI程序的位置:/var/www/cgi-bin/ 

httpd日志位置:/var/log/httpd/ 

设置httpd的账户和密码:/usr/bin/htpasswd 

[root@37-test ~]# tree /var/www/ -L 1

/var/www/

├── cgi-bin

├── error

├── html

└── icons


4 directories, 0 files


5、如何配置httpd的工作属性: 

5.1、基本语法

指令不区分字符大小写,但通常单词首字母大写。 

但指令的值区分大小写。参数间用空白字符隔开。 

5.2、配置文件的结构

主服务器和虚拟主机不能同时启用。 

                 全局配置:对主服务器或者虚拟机都有效,且有些功能是服务器自身属性。 

                主服务器;主站属性     主服务器和虚拟主机不可并存,至少关闭一个。 

                 虚拟主机:虚拟主机及属性定义 

5.3、配置文件语法测试:

1、service httpd configtest 

                                2、httpd -t 

注意:大多数配置通过service httpd reload即可生效,如果修改端口需要重启服务。 

                                                  

五、全局配置

1、配置监听的端口和地址 ,可以配置多个端口,但端口能重复。

        listen 192.168.1.5:8080 

2、配置所选的mpm的属性 

默认情况下,APACHE启动的是prefork模型,虽然worker模型使用多线程,可以实现资源共享,但是linux其实是不支持多线程的,这里的多线程就是轻量级进程。

切换到worker模型

[root@37-test ~]# more /etc/sysconfig/httpd  #进入/etc/sysconfig/httpd文件

# Configuration file for the httpd service.


#

# The default processing model (MPM) is the process-based ##默认使用profork模型

# 'prefork' model.  A thread-based model, 'worker', is also

# available, but does not work with some modules (such as PHP).

# The service must be stopped before changing this variable.

#

HTTPD=/usr/sbin/httpd.worker ##取消掉此注释


查看进程状态

[root@37-test ~]# ps axu |grep httpd

root     18229  0.0  0.0 177612  4044 ?        Ss   09:49   0:00 /usr/sbin/httpd.worker ##主进程,派发任务

apache   18343  0.0  0.0 587408  5340 ?        Sl   09:49   0:00 /usr/sbin/httpd.worker  ##辅助进程,生成线程



        mpm:多道处理模块 

                    perfork:一个进程响应一个请求 

                                        (1)绑定特权端口 

                                        (2)派发或回收子进程 

                                        (3)读取分析主配置文件 

                                                        <IfModule prefork.c> 

StartServers       8                //起始空闲进程 
MinSpareServers    5          //最小空闲进程 
MaxSpareServers   20         //最大空闲进程 
ServerLimit      256              //最多并发访问的进程数量 
MaxClients       256             //服务器最大接受访问的客户端数量,不要超过系统内存最大承载能力。 
MaxRequestsPerChild  4000        /单个程序能够请求的最大传输次数要求 

                    worker:一个进程生成多个线程,用户请求线程,linux的worker工作不如perfork工作效果好。 

<IfModule worker.c> 
StartServers         4  //起始线程
MaxClients         300  //最大线程数
MinSpareThreads     25  //最小空闲线程
MaxSpareThreads     75  //最大空闲线程
ThreadsPerChild     25  //每个进程生成线程数量
MaxRequestsPerChild  0  //每个进程最大相应请求数量
</IfModule> 

                    event:测试,未正式 

3、配置服务器支持keep-alived: keepalive {on|off} 

            优势:减少客户端访问请求过程中的建立连接时间,适用于比较空闲的服务器。如果在繁忙的服务器使用会造成其他用户访问不到资源,可以通过限制keepalive时间来处理建立的链接 

# KeepAlive: Whether or not to allow persistent connections (more than

# one request per connection). Set to "Off" to deactivate.

#


KeepAlive Off


限制长连接的方法:(如果有两个条件,其中一个条件满足就断开长连接)

# MaxKeepAliveRequests: The maximum number of requests to allow

# during a persistent connection. Set to 0 to allow an unlimited amount.

# We recommend you leave this number high, for maximum performance.

#

MaxKeepAliveRequests 100


#

# KeepAliveTimeout: Number of seconds to wait for the next request from the

# same client on the same connection.

#

keepalivetimeout=15(单位:秒,通常有2,3秒足以)

maxkeepaliverequests 100来限制最大连接为100个,限制单用户最大链接请求

4、配置加载的模块,可以通过此进行第三方模块的加载工作。 

        LoadModule  path 

这个路径是在参数 ServerRoot "/etc/httpd"为根目录进行指向子目录的。 

六、主服务器配置

1、定义站点名称 

# ServerName gives the name and port that the server uses to identify itself.

# This can often be determined automatically, but we recommend you specify

# it explicitly to prevent problems during startup.

#

# If this is not set to valid DNS name for your host, server-generated

# redirections will not work.  See also the UseCanonicalName directive.

#

# If your host doesn't have a registered DNS name, enter its IP address here.

# You will have to access it by its address anyway, and this will make

# redirections work in a sensible way.

#

ServerName www.example.com:80

            如果没有输入,则以hostname输出的内容为依据,并且填写的主机名要能够通过DNS访问。 

2、网页存放目录 

# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory, but

# symbolic links and aliases may be used to point to other locations.

#

DocumentRoot "/var/www/html"

3、配置页面文件访问属性 

            <directory> 

                    options Indexes FollowSymlinks ExecCGI

                        indexes是否允许索引页面内容,显示网页源码的文件列表。 

                        FollowSymlinks:是否允许跟随软连接,是否可以访问页面访问目录下的软连接文件。 

                        ExecCGI是否允许执行CGI脚本。 

            </directory> 

4、访问控制 

            基于客户端ip访问控制 

                    Order allow,deny    //后面的是默认法则,前面的允许规则没有明确定义的就按deny处理 

                    Allow from all            //定义allow允许的规则。 

                    说明当存在多个策略的时候,限制范围小的优先级高,先执行。 

    Order allow,deny

    Allow from 10.40.0.57


                 基于用户访问控制

(1)创建用户账户及密码: 
            htpasswd 
                    -h:查看帮助信息 
                    -c:创建新的账户文件 
                    -m:以md5方式加密密

[root@37-test ~]# htpasswd -c /root/passwd gongbing        //创建文件,并添加用户gongbing

[root@37-test ~]# htpasswd  /root/passwd zhang              //添加用户zhang

                                (2)在配置文件中添加如下内容:

                                            <Directory "path">

                                                    Option Indexes

                                                    AuthName "name"

                                                    AllowOverride AuthConfig

                                                    AuthType    Basic       //此方法认证的用户名密码在传输过程中并不加密传输。

                                                    AuthUserFile /etc/httpd/conf/.httpdpasswd

                                                    authgroupfile /etc/httpd/httpdgrouppasswd

                                                    Require user valid-user          //允许所有用户登录,可以输入用户名指定具体用户。

                                                    require group  groupname

                                            </Directory>


实例:

<Directory />

    AllowOverride AuthConfig

    Authname "gongbing"

    AuthType Basic

    AuthUserFile /root/passwd

    Require user "gongbing"


</Directory>


5、userdir:每个用户可以拥有自己的站点,访问方法:http://host/~username/ 

            方法:禁用UserDir disabled 

                        启用UserDir public_html   要求访问者有权限。 

6、定义默认主页面 

            DirectoryIndex:index.html default.html 

7、配置日志功能 

            日志有两类: 

                        访问日志 

                               pache日志参数说明:

Apache日志格式字符串的含义
%% 百分号(Apache2.0.44或更高的版本)
%a 远端IP地址
%A 本机IP地址
%B 除HTTP头以外传送的字节数
%b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示’-‘而不是0。
%{Foobar}C 在请求中传送给服务端的cookieFoobar的内容。
%D 服务器处理本请求所用时间,以微为单位。
%{FOOBAR}e 环境变量FOOBAR的值
%f 文件名
%h 远端主机
%H 请求使用的协议
%{Foobar}i 发送到服务器的请求头Foobar:的内容。
%l 远端登录名(由identd而来,如果支持的话),除非IdentityCheck设为”On“,否则将得到一个”-”。
%m 请求的方法
%{Foobar}n 来自另一个模块的注解Foobar的内容。
%{Foobar}o 应答头Foobar:的内容。
%p 服务器服务于该请求的标准端口。
%P 为本请求提供服务的子进程的PID。
%{format}P 服务于该请求的PID或TID(线程ID),format的取值范围为:pid和tid(2.0.46及以后版本)以及hextid(需要APR1.2.0及以上版本)
%q 查询字符串(若存在则由一个”?“引导,否则返回空串)
%r 请求的第一行
%s 状态。对于内部重定向的请求,这个状态指的是原始请求的状态,—%>s则指的是最后请求的状态。
%t 时间,用普通日志时间格式(标准英语格式)
%{format}t 时间,用strftime(3)指定的格式表示的时间。(默认情况下按本地化格式)
%T 处理完请求所花时间,以秒为单位。
%u 远程用户名(根据验证信息而来;如果返回status(%s)为401,可能是假的)
%U 请求的URL路径,不包含查询字符串。
%v 对该请求提供服务的标准ServerName。
%V 根据UseCanonicalName指令设定的服务器名称。
%X 请求完成时的连接状态:
X= 连接在应答完成前中断。
+= 应答传送完后继续保持连接。
-= 应答传送完后关闭连接。
(在1.3以后的版本中,这个指令是%c,但这样就和过去的SSL语法:%{var}c冲突了)
%I 接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。

%O 发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。

                                 定义日志方法:customlog “/path” 

                        错误日志

# ErrorLog: The location of the error log file.

# If you do not specify an ErrorLog directive within a <VirtualHost>

# container, error messages relating to that virtual host will be

# logged here.  If you *do* define an error logfile for a <VirtualHost>

# container, that host's errors will be logged there and not here.

#

ErrorLog logs/error_log

此路径是相对路径,其实际路径为:

[root@37-test ~]# ll /var/log/httpd/

总用量 100

-rw-r--r-- 1 root root     0 12月 20 03:40 access_log

-rw-r--r-- 1 root root 63570 12月 19 17:28 access_log-20161220

-rw-r--r-- 1 root root 28050 12月 20 08:31 error_log

-rw-r--r-- 1 root root   583 12月 18 03:26 error_log-20161218


[root@37-test ~]# ll /etc/httpd/logs/

总用量 100

-rw-r--r-- 1 root root     0 12月 20 03:40 access_log

-rw-r--r-- 1 root root 63570 12月 19 17:28 access_log-20161220

-rw-r--r-- 1 root root 28050 12月 20 08:31 error_log

-rw-r--r-- 1 root root   583 12月 18 03:26 error_log-20161218


8、路径别名

            DocumentRoot “/var/www/”    网页的根目录,下面可以跟两类容器,分别定义目录的访问权限。

            <directory "fs_path">                        //通过文件相对路径的方式限制访问,比如说对根目录进行限制就可以写成/var/www/。对

            </directory>

            <location "URL">                                //定义通过URL方式访问的文件限制,

            </location>            


http://www.magedu.com/images/logo.gif------->>/web/htdocs/images/logo.gif

            如果定义别名,可以将images这个目录映像为其他路径,而在访问是仍然使用images。

                    比如:Alias /images/ "/var/lib/gongbing/" 

9、脚本路径别名: 

        CGI:ScriptAlias  /cgi-bin/ "/var/www/cgi-bin/" 

10、是否使用标准主机名,如果有多个主机名,会仅仅使用servername定义的主机名。 

        UseCanonicaName off 

11、对于网页出现乱码,可能是由于AddDefaultCharSet UTF-8的设置问题,可以通过注释掉这选项来完成。 

12、路径别名alias,用来定义在访问网页时域名下的目录的实际位置,比如访问,www,hrwz.com/image/image.jps文件,这个image的实际位置在哪里,默认情况下会放在有documentroot指定的目录后面,通过alias可以进行重定向。 

        documentroot "/var/www/" 

        alias /image/ "/var/tmp/" 即可,再访问 www,hrwz.com/image/目录时就不会访问/var/www/image而是/var/tmp/目录了。

13、脚本路径别名,ScriptAlias,用来定义执行脚本的目录,方法类似路径别名。 

14、accessfilename用来定义单个目录、文件夹的访问权限、由于会存在继承问题,所以通常很少使用。 

15、 

<files ~”^\.ht”> 

order deny,allow 

deny from all 

</files> 

用来定义任何人不可以访问.ht开头的文件,实际上是一种安全策略。 

六、虚拟主机

1、一个web程序可以服务于多个站点,就是虚拟主机技术。 

2、HTTPS技术的关键是在传输层使用SSL或者TLS协议,实现基于ip地址的加密功能,也就是说,如果服务器使用基于主机名虚拟主机技术时,只能对一个ip地址进行https加密。

3、使用虚拟主机需要关闭主服务器,也就是两个不能同时使用,方法是关闭主服务器的DocumentRoot即可。 

虚拟主机类型: 

            基于端口的虚拟主机 

                    <VirtualHost 192.168.1.1:80>

                        ServerName "www.a.com" 

                        DocumentRoot "/var/www/a" 

                    <VirtualHost> 

                    <VirtualHost 192.168.1.1:8080>

                        ServerName "www.b.com" 

                        DocumentRoot "/var/www/b" 

                    <VirtualHost> 


            基于ip的虚拟主机 

                    <VirtualHost 192.168.1.1:80>

                        ServerName "www.a.com" 

                        DocumentRoot "/var/www/a" 

                    <VirtualHost> 

                    <VirtualHost 192.168.1.2:80>

                        ServerName "www.b.com" 

                        DocumentRoot "/var/www/b" 

                    <VirtualHost> 

                                                   需要网卡设置ip地址 

            基于主机名(域名)的虚拟主机

                相同的ip地址服务器如何指定请求的是哪个虚拟主机的服务呢,是根据request报文的host来识别的。

                 NameVirtualHost 192.168.1.1:80       //httpd 2.2之前的版本必须使用namevirtualhost。 

                    <VirtualHost 192.168.1.1:80> 

                        ServerName "www.a.com" 

                        DocumentRoot "/var/www/a" 

                    <VirtualHost> 

                    <VirtualHost 192.168.1.1:80>

                        ServerName "www.b.com" 

                        DocumentRoot "/var/www/b" 

                    <VirtualHost> 

10、https配置

        端口:443 

        前提:

1、需要模块支持ssl功能,需要libssl库

[root@37-test ~]# yum install mod_ssl

[root@37-test ~]# rpm -ql mod_ssl

/etc/httpd/conf.d/ssl.conf

/usr/lib64/httpd/modules/mod_ssl.so

/var/cache/mod_ssl

/var/cache/mod_ssl/scache.dir

/var/cache/mod_ssl/scache.pag

/var/cache/mod_ssl/scache.sem


2、提供CA(证书颁发机构)和公私秘钥,要安装openssl。

[root@37-test ~]# yum install openssl


                    2.1、生成CA及CA证书(私钥)。 

[root@37-test CA]# openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048   ##名称是固定的。

Generating RSA private key, 2048 bit long modulus

............................................................................................................................................................................+++

....................+++

e is 65537 (0x10001)

[root@37-test CA]# ll private/

总用量 4

-rw-r--r-- 1 root root 1679 12月 22 15:45 cakey.pem


                    2.2、生成自签名证书(CA自己的证书) (包含公钥)

[root@37-test CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 1000

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) [XX]:cn ##国家

State or Province Name (full name) []:beijing ##省

Locality Name (eg, city) [Default City]:beijing #市

Organization Name (eg, company) [Default Company Ltd]:dtedu ##公司

Organizational Unit Name (eg, section) []:sales #部门

Common Name (eg, your name or your server's hostname) []:web ##主机名

Email Address []:gongbing@dtedu.com ##联系用邮箱


   2.3将证书放在公共可以下载的位置,然后将后缀改为crt。(windows只识别crt证书)

[root@37-test CA]# cp cacert.pem /var/ftp/pub/ca.crt


                    2.3、生成序列号文件(实验用) 

                            在/etc/pki/CA目录下: 

[root@37-test CA]# touch index.txt

[root@37-test CA]# echo “01">serial

[root@37-test CA]# ls

cacert.pem  certs  crl  index.txt  newcerts  private  serial

        

3、以上只是创建了证书颁发机构及证书颁发机构的证书,web服务器要实现https功能,需要创建自己的公私钥,并提交到CA去申请证书,然后由CA颁发证书才可以使用。

3.1、生成web自己的公私钥

[root@37-test ssl]# openssl genrsa -out httpd.key 1024

Generating RSA private key, 1024 bit long modulus

..................................++++++

..........................++++++

e is 65537 (0x10001)

[root@37-test ssl]# ls

httpd.key


3.2生成证书csr,其实是公钥。

[root@37-test ssl]# openssl req -new -key httpd.key -out httpd.csr

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) [XX]:cn

State or Province Name (full name) []:beijing

Locality Name (eg, city) [Default City]:beijing

Organization Name (eg, company) [Default Company Ltd]:dtedu

Organizational Unit Name (eg, section) []:sales

Common Name (eg, your name or your server's hostname) []:www.dtedu.com ##此域名就是访问网站的域名

Email Address []:gongbing@dtedu.com


Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:



3.3对web服务器的公钥进行证书颁发。

[root@37-test ssl]# openssl ca -in httpd.csr -out httpd.crt -days 1000

Using configuration from /etc/pki/tls/openssl.cnf

Check that the request matches the signature

Signature ok

Certificate Details:

        Serial Number: 1 (0x1)

        Validity

            Not Before: Dec 23 06:56:21 2016 GMT

            Not After : Sep 19 06:56:21 2019 GMT

        Subject:

            countryName               = cn

            stateOrProvinceName       = beijing

            organizationName          = dtedu

            organizationalUnitName    = dtedu

            commonName                = www1.dtedu.com

            emailAddress              = gongbing@dtedu.com

        X509v3 extensions:

            X509v3 Basic Constraints: 

                CA:FALSE

            Netscape Comment: 

                OpenSSL Generated Certificate

            X509v3 Subject Key Identifier: 

                AF:27:D6:D5:E9:82:AF:11:D7:A7:4A:1E:F5:C2:0E:70:AD:76:02:91

            X509v3 Authority Key Identifier: 

                keyid:94:8F:2F:CD:31:41:EF:20:32:47:66:C9:62:68:10:8C:A8:9B:75:8A


Certificate is to be certified until Sep 19 06:56:21 2019 GMT (1000 days)

Sign the certificate? [y/n]:y



1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated


3.4、修改ssl.conf配置文件



[root@37-test ssl]# more /etc/httpd/conf.d/ssl.conf |grep -v ^# |grep -v ^$

LoadModule ssl_module modules/mod_ssl.so

Listen 443

SSLPassPhraseDialog  builtin

SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)

SSLSessionCacheTimeout  300

SSLMutex default

SSLRandomSeed startup file:/dev/urandom  256

SSLRandomSeed connect builtin

SSLCryptoDevice builtin

<VirtualHost _default_:443>

DocumentRoot "/var/www/html"

ServerName www.dtedu.com:443

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES

SSLCertificateFile /etc/httpd/ssl/httpd.crt

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

<Files ~ "\.(cgi|shtml|phtml|php3?)$">

    SSLOptions +StdEnvVars

</Files>

<Directory "/var/www/cgi-bin">

    SSLOptions +StdEnvVars

</Directory>

SetEnvIf User-Agent ".*MSIE.*" \

         nokeepalive ssl-unclean-shutdown \

         downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \

          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>                           


注意:当httpd.conf文件中有多个虚拟主机时,对于同一个ip地址的虚拟主机只能提供一个https服务,如果有多个ip地址,则可以针对ip地址提供多个https服务。


域名重定向(url rewrite),将默认访问80端口的请求转向访问https的443端口。此课程暂时没有提供,较复杂。




本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968570,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小阿哥
+ 关注