Tải bản đầy đủ (.pdf) (19 trang)

Tài liệu Apache 2.0 với giao thức SSL/TLS: Hướng dẫn từng bước (tiếp Phần I) pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (296.57 KB, 19 trang )



Apache 2.0 với giao thức
SSL/TLS: Hướng dẫn
từng bước (tiếp Phần I)

Cấu hình SSL/TLS

Trước khi chạy Apache lần đầu tiên, chúng ta cũng cần cung cấp cấu h
ình ban
số nội dung web mẫu. Ít nhất, chúng ta cần theo các bước sau (như là Root):

1. Tạo một số nội dung web mẫu mà sẽ được đáp ứng qua SSL/TLS:
umask 022
mkdir /www
echo " \
Test works." > /www/index.html
chown -R root:sys /www
2. Thay thế file cấu hình Apache mặc định (thông thường được tìm thấy
trong/usr/local/apache2/conf/httpd.conf) bằng một cái mới, dùng n
ội dung sau (tối
toàn và sự thực thi):
# =================================================

# Basic settings
# =================================================

User apache
Group apache
ServerAdmin
ServerName www.seccure.lab


UseCanonicalName Off
ServerSignature Off
HostnameLookups Off
ServerTokens Prod
ServerRoot "/usr/local/apache2"
DocumentRoot "/www"
PidFile /usr/local/apache2/logs/httpd.pid
ScoreBoardFile /usr/local/apache2/logs/httpd.scoreboard

DirectoryIndex index.html


# =================================================

# HTTP and performance settings
# =================================================

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 30

MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 0


# =================================================


# Access control
# =================================================


Options None
AllowOverride None
Order deny,allow
Deny from all


Order allow,deny
Allow from all


# =================================================

# MIME encoding
# =================================================


TypesConfig /usr/local/apache2/conf/mime.types

DefaultType text/plain

AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-tar .tgz

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl


# =================================================

# Logs
# =================================================

LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-
Agent}i
combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ErrorLog /usr/local/apache2/logs/error_log
CustomLog /usr/local/apache2/logs/access_log combined
CustomLog logs/ssl_request_log \
"%t %h %{HTTPS}x %{SSL_PROTOCOL}x %{SSL_CIPHER}x \
%{SSL_CIPHER_USEKEYSIZE}x %{SSL_CLIENT_VERIFY}x \
"%r

# =================================================

# SSL/TLS settings
# =================================================

Listen 0.0.0.0:443


SSLEngine on
SSLOptions +StrictRequire


SSLRequireSSL


SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM

SSLMutex file:/usr/local/apache2/logs/ssl_mutex

SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect file:/dev/urandom 1024

SSLSessionCache shm:/usr/local/apache2/logs/ssl_cache_shm
SSLSessionCacheTimeout 600

SSLPassPhraseDialog builtin
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
SSLVerifyClient none
SSLProxyEngine off


AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl


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

nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
3. Chú ý: Các bạn nên thay đổi một số giá trị trong file cấu hình trên. Ch
ẳng hạn nh
server, địa chỉ e-mail của người quản trị.v.v….

4. Tham gia c
ấu trúc lại th
ư m
ục khoá private của web server
, các ch
ứng chỉ, v
hồi chứng chỉ (CRLs).
umask 022
mkdir /usr/local/apache2/conf/ssl.key
mkdir /usr/local/apache2/conf/ssl.crt
mkdir /usr/local/apache2/conf/ssl.crl
5. Tạo một dịch vụ “tự kí nhận” (nó sẽ chỉ được dùng cho m
ục đích kiểm tra
của bạn nên lấy từ một CA thích hợp như Verisign):
openssl req \
-new \
-x509 \
-days 30 \
-keyout /usr/local/apache2/conf/ssl.key/server.key \
-out /usr/local/apache2/conf/ssl.crt/server.crt \
-subj '/CN=Test-Only Certificate'
Kiểm tra phần cài đặt

Tại thời điểm này, chúng ta có thể bắt đầu Apache hỗ trợ SSL/TLS như sau:

/usr/local/apache2/bin/apachectl startssl
Apache/2.0.52 mod_ssl/2.0.52 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server 127.0.0.1:443 (RSA)
Enter pass phrase:*************

Ok: Pass Phrase Dialog successful.
Sau khi máy ch
ủ bắt đầu, chúng ta có thể cố gắng kết nối tới nó bằng cách trỏ v
một đường dẫn URL có dạng: ver (trong trư
ờng hợp của chú
là)

Trong một vài phút, chúng ta s
ẽ thấy cảnh báo nói rằng có vấn đề với việc kiểm chứng sự xác nhận
web server chúng ta muốn truy cập. Minh hoạ trong hình 3 là m
ột ví dụ từ MS Internet Explorer 6.0.

Hình 3. Cảnh báo trước của IE 6.0.
Sự xuất hiện của cảnh báo trên đúng một cách hoàn hảo! Chúng ta nên nh
ận cảnh báo n
do sau:
 Web browser không biết Certificate Authority (quyền hạn chứng chỉ), đ
ư
chứng chỉ của web server (và không thể biết, bởi vì chúng ta đang dùng ch
ứng chỉ tự kí
certificate).
 CN (Common Name) – Tên chung đư

ợc cho bởi chứng chỉ không nối ghép t
tại thời điểm nó là chứng chỉ chỉ đọc (Text-only Certificate), và nó sẽ l
à tên mi
của web server (ví dụ như:www.seccure.lab)
Sau khi thực thi với Internet Explorer, chúng ta nên xem n
ội dung web sau, nh
4:

Hình 4. Trang web làm việc mẫu của SSL.
Một điều cần chú ý, có một cái khoá vàng
ở cuối của web browser. Điều đó có n
đã được thiết lập thành công. Giá trị 128 bit nói lên rằng khoá đối xứng đư
ợc d
dịch có độ dài 128 bit. Và nó đủ mạnh (ít nhất tại thời điểm này) đ
ể bảo vệ giao thông mạng khỏi sự
xâm nhập trái phép.

Nếu chúng ta kích đúp vào biểu tư
ợng khoá, chúng ta sẽ thấy các thuộc tính của chứng chỉ website,
như được chỉ ra trong hình 5:

Hình 5. Các chi tiết của chứng chỉ tự kí (sekf-signed certificate)
Gở rối

Nếu vì một lí do nào đó chúng ta không thể truy cập được vào website, có m
ột chức năng chẩn đoán
hữu ích là “s_client”, nằm trong thư viện OpenSSL. Nó có thể được dùng đ
ể gỡ rối các kết nối
SSL/TLS. Ví dụ sau chỉ ra cách dùng chức năng này như thế nào:
/usr/bin/openssl s_client -connect localhost:443

CONNECTED(00000003)
depth=0 /CN=Test-Only Certificate
verify error:num=18:self signed certificate
verify return:1
depth=0 /CN=Test-Only Certificate
verify return:1

Certificate chain
0 s:/CN=Test-Only Certificate
i:/CN=Test-Only Certificate

Server certificate
BEGIN CERTIFICATE
MIICLzCCAZigAwIBAgIBADANBgkqhkiG9w0BAQQFADAgMR4wHAYDVQQDExVUZXN0
LU9ubHkgQ2VydGlmaWNhdGUwHhcNMDQxMTIyMTg0ODUxWhcNMDQxMjIyMTg0ODUx
WjAgMR4wHAYDVQQDExVUZXN0LU9ubHkgQ2VydGlmaWNhdGUwgZ8wDQYJKoZIhvcN
AQEBBQADgY0A
MIGJAoGBAMEttnihJ7JpksdToPi5ZVGcssUbHn/G+4G43OiLhP0i
KvYuqNxBkSqqM1AanR0BFVEtVCSuq8KS9LLRdQLJ/B1UTMOGz1Pb14WGsVJS+38D
LdLEFaCyfkjNKnUgeKMyzsdhZ52pF9febB+d8cLmvXFve28sTIxLCUK7l4rjT3Xl
AgMBAAGjeTB3MB0GA1UdDgQWBBQ50isUEV6uFPZ0L4RbRm41+i1CpTBIBgNVHSME
QTA/gBQ5
0isUEV6uFPZ0L4RbRm41+i1CpaEkpCIwIDEeMBwGA1UEAxMVVGVzdC1P
bmx5IENlcnRpZmljYXRlggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
gYEAThyofbK3hg8AJXbAUD6w6+mz6dwsBmcTWLvYtLQUh86B0zWnVxzSLDmwgdUB
NxfJ7yfo0PkqNnjHfvnb5W07GcfGgLx5/U3iUROObYlwKlr6tQzMoysNQ/YtN3pp
52sGsqaOOWpYlAGOaM8j57Nv/eXogQnDRT0txXqoVEbunmM=
END CERTIFICATE
subject=/CN=Test-Only Certificate
issuer=/CN=Test-Only Certificate


No client certificate CA names sent

SSL handshake has read 1143 bytes and written 362 bytes

New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
SSL-Session:
Protocol : SSLv3
Cipher : DHE-RSA-AES256-SHA
Session-ID:
56EA68A5750511917CC42A1B134A8F218C27C9C0241C35C53977A2A8BBB9986A
Session-ID-ctx:
Master-Key:
303B60D625B020280F5F346AB00F8A61A7C4BEA707DFA0ED8D2F52371F8C4F08
7FB6EFFC02CE3B48F912D2C8929DB5BE
Key-Arg : None
Start Time: 1101164382
Timeout : 300 (sec)
Verify return code: 18 (self signed certificate)

GET / HTTP/1.0

HTTP/1.1 200 OK
Date: Mon, 22 Nov 2004 22:59:56 GMT
Server: Apache
Last-Modified: Mon, 22 Nov 2004 17:24:56 GMT
ETag: "5c911-46-229c0a00"
Accept-Ranges: bytes
Content-Length: 70

Connection: close
Content-Type: text/html Test works.
closed
Chức năng s_client có nhiều tuỳ chọn hữu ích. Chẳng hạn như tắt/mở (on/off
) m
(-ssl2 , -ssl3, -tls1). Sau đó khởi động lại Apache và ki
ểm tra các file đăng nhập
(/usr/local/apache2/logs/) để có thêm thông tin.

Chúng ta cũng có thể dùng Ethereal hoặc ssldump. Chúng ta có th
ể xem một cách thụ động các
thông báo Handshake của SSL, và cố gắng tìm ra lí do l
ỗi nếu không có những công cụ n

Một màn hình nhỏ thực thi việc này trên Ethereal được mô tả trong hình 6.

Hình 6. Màn hình Ethereal với phương thức SSL Handshake.
Kết luận phần I

Việc cài đặt và chạy Apache 2 secure cùng giao thức SSL và m
ột chứng chỉ mẫu đ
một của loạt bài này. Trong phần hai tới các bạn sẽ đư
ợc giới thiều về các thiết lập
thực thi cho mod_ssl, cũng như tiến trình tạo ra một chứng chỉ web server ph
ù h

×