OpenSSL + Apache 2.0.X (RPM설치시 예제)

■mod_sslインストール


[root@centos ~]# yum -y install mod_ssl ← mod_sslインストール

■WebサーバーSSL設定

(1)サーバー用秘密鍵・証明書作成

[root@centos ~]# cd /etc/pki/tls/certs/ ← ディレクトリ移動※CentOS5の場合

[root@centos ~]# cd /usr/share/ssl/certs ← ディレクトリ移動※CentOS4の場合

[root@centos certs]# sed -i 's/365/3650/g' Makefile ← サーバー用証明書有効期限を1年から10年に変更

[root@centos certs]# make server.crt ← サーバー用秘密鍵・証明書作成
umask 77 ; \
        /usr/bin/openssl genrsa -des3 1024 > server.key
Generating 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 server.key -x509 -days 3650 -out server.crt -set_serial 0
Enter pass phrase for server.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) [GB]:JP ← 国名応答
State or Province Name (full name) [Berkshire]:Kanagawa ← 都道府県名応答
Locality Name (eg, city) [Newbury]:Kawasaki ← 市区町村名応答
Organization Name (eg, company) [My Company Ltd]:centossrv.com ← サイト名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:centossrv.com ← Webサーバー名応答
Email Address []:webmaster@centossrv.com ← 管理者メールアドレス応答

[root@centos certs]# openssl rsa -in server.key -out server.key ← サーバー用秘密鍵からパスワード削除
Enter pass phrase for server.key: ← サーバー用秘密鍵・証明書作成時のパスワード応答※表示はされない
writing RSA key
※パスワードを削除するのは、Webサーバー起動時にパスワードを要求されないようにするため

(2)SSL設定

[root@centos certs]# vi /etc/httpd/conf.d/ssl.conf ← ApacheSSL設定ファイル編集
※CentOS5の場合
SSLCertificateFile /etc/pki/tls/certs/server.crt ← サーバー用証明書を指定

SSLCertificateKeyFile /etc/pki/tls/certs/server.key ← サーバー用秘密鍵を指定

※CentOS4の場合
SSLCertificateFile /usr/share/ssl/certs/server.crt ← サーバー用証明書を指定

SSLCertificateKeyFile /usr/share/ssl/certs/server.key ← サーバー用秘密鍵を指定

#  General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html" ← #を削除(コメント解除)
↓
DocumentRoot "/var/www/html"

■Apache設定反映

(1)Apache設定反映

[root@centos certs]# /etc/rc.d/init.d/httpd restart ← Apache再起動
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

(2)ポート443番のOPEN
ルーター側の設定でポート443番をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照

아파치 소스 설치의 경우가 더 많을 걸로 예상되어서 잠시 정리하면 ...

1. /usr/local/apache2/conf/httpd.conf 에서 httpd-ssl.conf 찾아서
include를 해제해 준다
약 400~450 사이쯤에 아래와 같은 부분이 있다
# Secure (SSL/TLS) connections
# Include conf/extra/httpd-ssl.conf
※ 위 # 삭제 아래와 같이
Include conf/extra/httpd-ssl.conf

2. vi /usr/local/apache2/conf/extra/httpd-ssl.conf (파일 열고)

3. 76째 줄부터 몇가지 설정을 해 준다
# General setup for the virtual host
DocumentRoot "/html/webroot" <-- 알맞게 변경
DirectoryIndex index.php index.html index.htm <-- 이 부분 추가
ServerName www.thenamed.net:443 <-- 해당 도메인으로 변경
ServerAdmin xxxx@xxxx.jp <-- 알맞게 변경
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/logs/access_log"

4. 약 100번째 줄에서 부터 두가지 변경
SSLCertificateFile "/usr/local/apache2/conf/server-dsa.crt"
위를 아래와 깉이 변경
SSLCertificateFile "/usr/local/ssl/www.thenamed.net.crt"

5. 약 110번째 줄에서 부터
SSLCertificateKeyFile "/usr/local/apache2/conf/server-dsa.key"
아래 처럼 변경
SSLCertificateKeyFile "/usr/local/ssl/www.thenamed.net.key"

즉 인증서(crt)과 키(key)파일을 저장한 위치를 설정해 주면 된다.

마지막으로 /usr/local/apache2/bin/apachectl restart

https://www.example.com 자기도메인으로 접속해 보면 정상적으로 보여야 한다
하지만 OpenSSL 이기 때문에 인증되자 않은 사용자라고 경고메세지가 뜨는데
이는 원도우계열이라면 MS에 인증서 비용을 제출해야 MS에서 경고메세지가
안 뜨도록 인증된 사용자라고 등록해 준다 ..

녹색방퍠와 빨간방패가 뜬다면 빨간 방패를 눌러 사이트에 접속하도록 하자..

TIP. VeriSign과 같은 등록대행 업체를 이용한다면
중계인증자까지 등록 해야 한다
SSLCACertificateFile 부분을 찾아 경로에 맞게 세팅한다.
확장자는 .ca.crt이다
SSLCACertificateFile /usr/local/ssl/www.verisign.net.ca.crt
(SSLCACertificateFile는 주석 처리 되어 있으니 경로에 맞게 세팅)