<-
Apache > HTTP Server > �ĵ� > �汾2.2 > SSL/TLS
���� ��л | �������� | ��ƪ���ߣ��𲽹� | ��ҳ�����£�2006��1��16�� | ��ȡ���°汾

SSL/TLS��ǿ�ȼ��ܣ����...?

�������Ľ�������Ǽ򵥶���ֱ�ӵģ�ֻ��Ϊ�˸�����������ϰ��

-- ��׼�̿���

����SSL��HTTP��Apache���߹�ͬ��������д�����ʹ����֧��SSL��web��������ʵ������İ�ȫ��Լ��ò���ô�򵥡����ڽ�������ͨ����µĽ����������Ϊ�ҳ����շ����ĵ�һ����������Щ������ǰ����Ҫ������ȥ��⣬���˽������ƺ�����Ծ�óȻʹ�����������ˡ�

top

���ܷ�����ǿ���Ըߵȼ���ȫ

��ν���һ����ʹ��SSLv2�ķ�������

������������һ����ʹ��SSLv2Э�鼰�������㷨�ķ�������

httpd.conf

SSLProtocol -all +SSLv2
SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP

��ν���һ�������ܸ�ǿ�ȼ��������SSL��������

��������Ϊ��ʹ����ǿ�����������㷨��

httpd.conf

SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

��ν���һ�������ܸ�ǿ�ȼ��������SSL������������������������ʹ�ø�ǿ�ļ��ܣ�

������ܱ���Ϊ�Է�����Ϊ���صļ���(Server Gated Cryptography[SGC])������mod_ssl������README.GlobalID�ĵ�������ϸ˵�����򵥵�˵���ǣ�������ӵ��һ��������Verisign��һ�������CA֤��ǩ���ķ��������֤���Ӷ��ڶ����������ʵ�ָ�ǿ�ȼ��ܡ���������£������ʹ�ö�������������ӣ�������������ȫ��ID���֤�������У����ں��HTTPͨѶ����֮ǰ�����������顣���ڵ������ǣ������������������������ǿ���Ե�ʹ�ø�ǿ�ȼ��ܡ����仰˵���ǣ�����������ڿ�ʼ����ʱ��ʹ�ø�ǿ�ȼ��ܣ�������������ǿ�ȼ��ܣ�����ά�ֶ��������Dz�����ġ���������ؽ����������⣺

httpd.conf

# �����ڳ�ʼ���ֽ׶�ʹ�����е����룬��������������ͨ��SGC��������������
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

<Directory /usr/local/apache2/htdocs>
# �������ջ�ܾ�����û������������������
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
</Directory>

��ν��������������������SSL�������������ض���URLʵʩ��ǿ�ȼ��ܣ�

��Ȼ������ʹ�÷�����ȫ������SSLCipherSuite��������������Ϊǿ���͡����ǣ�mod_ssl�������������Ŀ¼�������飬���Զ�����һ�����з��������õ�SSL��������Э�̡���ˣ������������ˣ�

# ��һ������µĴ����ǿ��ɵ�
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

<Location /strong/area>
# ������ //hostname/strong/area/ �������µ�����Ҫ���ǿ������
SSLCipherSuite HIGH:MEDIUM
</Location>

top

�ͻ���֤�ͷ��ʿ���

��֪�����пͻ�������£����ʵ�ֻ���֤��Ŀͻ���֤��

������˽�����û�Ⱥ��(���磺һ����յ��û���)��������һ��Intranet�У������ʹ��һ���֤����֤������Ҫ��������ֻ�ǣ����������Լ���CA֤��ǩ���Ŀͻ�֤��ca.crt ��������֤��У��ͻ���

httpd.conf

# require a client certificate which has to be directly
# signed by our CA certificate in ca.crt
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile conf/ssl.crt/ca.crt

������һ���ض���URL�Կͻ�ʵʩ����֤�����֤����ͬʱ�������κοͻ����ʷ��������ಿ�֣�

����Ҫ�õ�mod_ssl�ṩ�����Ŀ¼�������ù��ܣ�

httpd.conf

SSLVerifyClient none
SSLCACertificateFile conf/ssl.crt/ca.crt

<Location /secure/area>
SSLVerifyClient require
SSLVerifyDepth 1
</Location>

������ijЩURL���ض��Ŀͻ�ʵʩ����֤�����֤����ͬʱ�������κοͻ����ʷ��������ಿ�֣�

��ؼ����ڶԿͻ�֤��ĸ�����ɲ��ֽ�����֤��һ�����ָ��֤ Distinguished Name (DN) ��ȫ���򲿷֡��л���mod_auth_basic�ͻ���SSLRequire���͵����ַ�������֤����һ�ַ����ʺ����ڿͻ���ȫ���ڲ�ͬ���ͣ���Ϊ�����ͻ��������������ݿ�����Σ��ڶ��ַ��������ڿͻ�������һ��������д��DN�Ĺ����ּ���һ���ֵ����Σ���Ϊƥ��ͻ�������ס�

��һ�ַ�����

httpd.conf

SSLVerifyClient      none
<Directory /usr/local/apache2/htdocs/secure/area>

SSLVerifyClient      require
SSLVerifyDepth       5
SSLCACertificateFile conf/ssl.crt/ca.crt
SSLCACertificatePath conf/ssl.crt
SSLOptions           +FakeBasicAuth
SSLRequireSSL
AuthName             "Snake Oil Authentication"
AuthType             Basic
AuthBasicProvider    file
AuthUserFile         /usr/local/apache2/conf/httpd.passwd
require              valid-user
</Directory>

httpd.passwd

/C=DE/L=Munich/O=Snake Oil, Ltd./OU=Staff/CN=Foo:xxj31ZMTZzkVA
/C=US/L=S.F./O=Snake Oil, Ltd./OU=CA/CN=Bar:xxj31ZMTZzkVA
/C=US/L=L.A./O=Snake Oil, Ltd./OU=Dev/CN=Quux:xxj31ZMTZzkVA

�ڶ��ַ�����

httpd.conf

SSLVerifyClient      none
<Directory /usr/local/apache2/htdocs/secure/area>

  SSLVerifyClient      require
  SSLVerifyDepth       5
  SSLCACertificateFile conf/ssl.crt/ca.crt
  SSLCACertificatePath conf/ssl.crt
  SSLOptions           +FakeBasicAuth
  SSLRequireSSL
  SSLRequire       %{SSL_CLIENT_S_DN_O}  eq "Snake Oil, Ltd." \
               and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}
</Directory>

���Ҫ������Internet�Ŀͻ�ʹ��ǿ�����HTTPS�����������Intranetվ���������ʵʩ���߻����Ļ��߿ͻ�֤�����֤����ͬʱ������Intranet�Ŀͻ�������ͨ��HTTP���ʣ�

����Intranet�ͻ���IP��ַ��192.160.1.0/24��Intranetվ���������URL��/subarea ���������HTTPS��������������������(��ͬʱ������HTTPS��HTTP)��

httpd.conf

SSLCACertificateFile conf/ssl.crt/company-ca.crt

<Directory /usr/local/apache2/htdocs>
# subarea���������ֻ��������Intranet�ķ���
Order                deny,allow
Deny                 from all
Allow                from 192.168.1.0/24
</Directory>

<Directory /usr/local/apache2/htdocs/subarea>
# ��subarea���ڣ�������������Intranet�ķ��ʣ�
# ��������Internet�ķ��ʣ�������HTTPS+Strong-Cipher+Password
# ����HTTPS+Strong-Cipher+Client-Certificate

# ���ʹ����HTTPS����ȷ��ʹ�ø�ǿ�ȼ���
# ͬʱ����ͻ��Ի�����֤����ʽ��֤
SSLVerifyClient      optional
SSLVerifyDepth       1
SSLOptions           +FakeBasicAuth +StrictRequire
SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 128

# ǿ������Internet�Ŀͻ�ʹ��HTTPS
RewriteEngine        on
RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
RewriteCond          %{HTTPS} !=on
RewriteRule          .* - [F]

# ����������ʺͻ�����֤
Satisfy              any

# �����������
Order                deny,allow
Deny                 from all
Allow                192.168.1.0/24

# HTTP������֤
AuthType             basic
AuthName             "Protected Intranet Area"
AuthBasicProvider    file
AuthUserFile         conf/protected.passwd
Require              valid-user
</Directory>