indexのないディレクトリの一覧を表示させない
/etc/httpd/conf/httpd.confを編集
#Options Indexes FollowSymLinks Options -Indexes FollowSymLinks
Indexes を -Indexesにする
/etc/httpd/conf/httpd.confを編集
#Options Indexes FollowSymLinks Options -Indexes FollowSymLinks
Indexes を -Indexesにする
と表示させようとしたら。。。。。。
PHP Warning: Header may not contain more than a single header, new line detected. in
なんてエラーが。。。。。。。
Header?????
調べてみるとなんだか
「HTTPヘッダーは単純に、改行を挟むだけで、複数のヘッダーを送れてしまうため、改行が含まれている文字列はエラーとするように PHP4.4.2 または 5.1.2 以降で変更になりました。」
とかなんとか……あまり関係ないなぁ
とりあえず
これで表示されたが原因は不明だ。。。。。
環境によってはheaderをつけなくてはいけないのか?????
なんか気持ち悪いので入れなおしたら直った!!!!
まずOpenSSLがインストールされているか確認
# openssl version OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
mod_sslインストール
# yum install mod_ssl
ここでは証明局を/etc/pki/CA サーバー証明を/usr/local/ssl にする
/usr/local/にsslディレクトリを作成。CAは過程で作成される。
# mkdir /usr/local/ssl
/etc/pki/tls/misc/CA を編集
# vi /etc/pki/tls/misc/CA
有効期限を10年にしておく
#DAYS="-days 365" # 1 year #CADAYS="-days 1095" # 3 years DAYS="-days 3652" # 10 years CADAYS="-days 3652" # 10 years
/etc/pki/tls/openssl.cnfの設定
# vi /etc/pki/tls/openssl.cnf
default_daysを10年へ
default_bitsを2048へ
[ usr_cert ] basicConstraintsをCA:TRUEへ
nsCertTypeを指定
nsComment = “OpenSSL Generated Certificate” コメントアウト
nsCertType = sslCA, emailCA コメント解除
—- 以下は同じことを2度入力するので設定しておいた方がいいかも
countryName_default 国名 JP
stateOrProvinceName_default 都道府県 Tokyoとか
localityName_default 市区町村 Shinjukuとか
0.organizationName_default 組織名
organizationalUnitName_default 部署名など コメント解除して
commonName_default 追記
#default_days = 365 # how long to certify for default_days = 3652 # how long to certify for #default_bits = 1024 default_bits = 2048 #countryName_default = GB countryName_default = JP #stateOrProvinceName_default = Berkshire stateOrProvinceName_default = Tokyo #localityName_default = Newbury localityName_default = Shinjuku #0.organizationName_default = My Company Ltd 0.organizationName_default = Company [ usr_cert ] #basicConstraints=CA:FALSE basicConstraints=CA:TRUE # nsCertType = client, email, objsign nsCertType = server, client, email, objsign #nsComment = "OpenSSL Generated Certificate"
認証局(CA)を構築する
# cd /etc/pki/tls/misc/
# ./CA -newca
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 2048 bit RSA private key
......................................++++++
......++++++
writing new private key to '../../CA/private/./cakey.pem'
Enter PEM pass phrase: /*パスフレーズ入力*/
Verifying - Enter PEM pass phrase: /*パスフレーズ確認*/
-----
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.
-----
/*以下opennssl.conf defaul設定でよければenter 設定する場合は環境に合わせ*/
Country Name (2 letter code) [GB]:JP /*国*/
State or Province Name (full name) [Berkshire]:Tokyo /*都道府県*/
Locality Name (eg, city) [Newbury]:Shinjuku /*市区町村*/
Organization Name (eg, company) [My Company Ltd]:Company /*組織名*/
Organizational Unit Name (eg, section) []:Section /*部署名など*/
Common Name (eg, your name or your server's hostname) []:****.com /*ホスト名*/
Email Address []:info@****.com /*メールアドレス*/
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: /*証明書を破棄する場合に必要になるパスワード*/
An optional company name []: /*別の組織名がある場合*/
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ../../CA/private/./cakey.pem: /*最初に入力したパスフレーズ*/
Check that the request matches the signature
Signature ok
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = Company
organizationalUnitName = Section
commonName = ****.com
emailAddress = info@****.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
・・・・・・・・・・・・
・・・・・・・・・・・・・・
Write out database with 1 new entries
Data Base Updated
公開鍵(cacert.pem)が認証ができてるかを確認
# openssl verify /etc/pki/CA/cacert.pem cacert.pem: /C=JP/ST=Tokyo/L=Shinjuku・・・・・・・・・・・・ error 18 at 0 depth lookup:self signed certificate OK
CAの秘密鍵を他人に見られないようにパーミッション設定
# chmod 600 /etc/pki/CA/private/cakey.pem # chmod 700 /etc/pki/CA/private
やり直したい場合は/etc/pki/CAをディレクトリごと削除
rm -rf /etc/pki/CA
ここで/usr/local/sslへ移動
# cd /usr/local/ssl
サーバー秘密鍵(server.key) の作成
# openssl genrsa -rand rand.dat -des3 -out server.key 2048 0 semi-random bytes loaded Generating RSA private key, 2048 bit long modulus ..................................................+++ ....+++ e is 65537 (0x10001) Enter pass phrase:/*パスフレーズ*/ Verifying - Enter pass phrase: /*パスフレーズ確認*/
秘密鍵(server.key)を使って公開鍵(server.csr)を作成
# openssl req -new -key server.key -out server.csr 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. ----- /*以下opennssl.conf defaul設定でよければそのままenter 設定する場合は環境に合わせ*/ Country Name (2 letter code) [GB]:JP /*国*/ State or Province Name (full name) [Berkshire]:Tokyo /*都道府県*/ Locality Name (eg, city) [Newbury]:Shinjuku /*市区町村*/ Organization Name (eg, company) [My Company Ltd]:Company /*組織名*/ Organizational Unit Name (eg, section) []:Section /*部署名など*/ Common Name (eg, your name or your server's hostname) []:****.com /*ホスト名*/ Email Address []:info@****.com /*メールアドレス*/ Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
ここで/etc/pki/tls/miscへ移動
# cd /etc/pki/tls/misc
サーバーの公開鍵(server.csr)に認証局(CA)の署名をしてもらう
# openssl ca -policy policy_anything -out /usr/local/ssl/cert-ca.pem -infiles /usr/local/ssl/server.csr
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/pvCA/private/cakey.pem: /*パスフレーズ入力*/
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: ********************* GMT
Not After : ********************* GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = Company
organizationalUnitName = Section
commonName = ****.com
emailAddress = info@****.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
・・・・・・・・・・・
Certificate is to be certified until ************ GMT (3652 days)
Sign the certificate? [y/n]:y/*「証明書に署名しますか?」 yes*/
1 out of 1 certificate requests certified, commit? [y/n]y /*「署名リクエストを作成しますか?」 yes*/
Write out database with 1 new entries
認証局(CA)の署名つき証明書が作成されたか確認
/usr/local/ssl/cert-ca.pem: OK が表示されればOK
# openssl verify -CAfile /etc/pki/CA/cacert.pem /usr/local/ssl/cert-ca.pem /usr/local/ssl/cert-ca.pem: OK
/usr/local/ssl/へ移動
# cd /usr/local/ssl/
クライアントが読み込むCAの証明書(server.crt)を作成
# openssl x509 -inform pem -in /etc/pki/CA/cacert.pem -out client.crt -outform der
サーバーの秘密鍵をバックアップしパスフレーズ削除しておく
# cp -p server.key server.key.bk # openssl rsa -in server.key.bk > server.key Enter pass phrase for server.key.bk: /*パスフレーズ*/ writing RSA key
/etc/httpd/conf.d/ssl.confの設定
# vi /etc/httpd/conf.d/ssl.conf
112行目SSLCertificateFile
119行目SSLCertificateKeyFile
を変更
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateFile /usr/local/ssl/cert-ca.pem #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key SSLCertificateKeyFile /usr/local/ssl/server.key
httpdのリスタート
# service httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ]
これでOK!!!
CAを作らないパターンなら簡単だがCA作るパターンは苦労した。。。。。。。
《参考サイト》
おれおれCA(プライベート認証局)構築編
OpenSSLでの自己認証局(CA)や証明書などの作成方法
OpenSSLを使ったCAの構築
Apache + OpenSSL CSR生成手順 (新規)
Apache+SSL環境構築の流れ
コマンドプロンプトでApache2.2\binまで移動して以下を実行
サーバ用秘密鍵(server.key)
サーバ用公開鍵(server.csr)
サーバ用証明書(server.crt)
ブラウザ用証明書(server.der)
それぞれのファイルがApache2.2\confに出来る
httpd.confの設定
以下の2行のコメントを解除
この状態でApacheを再起動するとOK
その他細かな設定はhttpd-ssl.confにて
http://domain1.localhost/
http://domain2.localhost/
なんてローカルでヴァーチャルホスト風に設定しているのでせっかくだからそれぞれでSSL通信したい!!
httpd-ssl.conftにVirtualHostの設定部分があるのでそこにNameVirtualHost *:443
以下の部分をVirtualHostではさまれた部分を丸々コピーしてヴァーチャルホストの分をペーストする。
コメントの部分は要らないから削除した方が見やすい。
変更は以下の2点
これでhttps://domain1.localhost/でアクセスできる
Windowsの開発環境でも.htaccessを使いたい!!
mod_rewriteしたいから!!!
httpd.confを編集
<Directory “対象ディレクトリパス”>
AllowOverride All ← AllowOverrideNoneだったらAllに変更
</Directory>
↓以下を追記
AccessFileName h.htaccess
<Files h.htaccess>
Order allow,deny
Deny from all
</Files>
AccessFileName と
<Files ≶
で使用するファイル名を定義する
なんでも良いのだがここではh.htaccess
これだとアップしたときに頭のhを削除するだけだから簡単