1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
SSL サポートについて
(2000/11/07) 岡部克也
okabek@guitar.ocn.ne.jp
(2001/12/27) 鵜飼文敏
ukai@debian.or.jp
・ OpenSSL ライブラリを通じて, SSL をサポートしています.
あらかじめインストールしておいてください.
・ OpenSSL ライブラリがインストールされていれば configure スクリプト実行時に自
動的に検出されて利用可能となります.
もしうまく動かないときは, config.h をチェックしてみてください. SSL を利用す
るためには, config.h で, USE_SSL マクロが定義されている必要があります.
さらに, SSL 認証サポートを利用する場合は, USE_SSL_VERIFY マクロもチェックし
てみてください.
コンパイルでエラーが出る場合は, リンカフラグに `-lssl -lcrypto', コンパイラ
フラグに '-I(SSLeay/OpenSSL のヘッダがあるディレクトリ)' があるか確認してく
ださい.
SSL サポートが有効になっているかどうかは, Option Setting Panel に「SSLの設
定」が含まれているかどうかで確認できます.
・ SSL に関して以下の設定が可能になってます:
ssl_forbid_method
使わないSSLメソッドのリスト(2: SSLv2, 3: SSLv3, t: TLSv1.0,
5: TLSv1.1, 6: TLSv1.2, 7: TLSv1.3)
(デフォルトは2, 3, t, 5).
ssl_min_version
最小のSSLバージョン, OpenSSL 1.1以上で有効(all, TLSv1.0, TLSv1.1,
TLSv1.2, TLSv1.3のいずれか) (デフォルトは<NULL>).
ssl_cipher
TLSv1.2以下用のSSL暗号(例: DEFAULT:@SECLEVEL=2) (デフォルトは
OpenSSL 1.1以上なら<NULL>、それ以外ならDEFAULT:!LOW:!RC4:!EXP).
ssl_verify_server ON/OFF
SSLのサーバ認証を行う(デフォルトはON).
ssl_cert_file ファイル名
SSLのクライアント用PEM形式証明書ファイル(デフォルトは<NULL>).
ssl_key_file ファイル名
SSLのクライアント用PEM形式秘密鍵ファイル(デフォルトは<NULL>).
ssl_ca_path ディレクトリ名
SSLの認証局のPEM形式証明書群のあるディレクトリへのパス
(デフォルトは<NULL>).
ssl_ca_file ファイル名
SSLの認証局のPEM形式証明書群のファイル(デフォルトは<NULL>).
ただし「SSLEAY_VERSION_NUMBER >= 0x0800」な環境でないと無駄なコードが増
えるだけなので, configure時にdisableしておいたほうがよいでしょう.
また実際に認証を行う場合, ssl_ca_pathまたはssl_ca_fileで, サーバの鍵に
署名している認証局の証明書を (ssl_verify_serverのON/OFFに関係無く) 指定
しないとサーバ認証は成功しません。
通常使われている認証局の証明書は以下のところなどから入手できます。
* mozillaのソースに含まれている
mozilla/security/nss/lib/ckfw/builtins/certdata.txt
から添付の ruby script で *.pemファイルとしてとりだしたもの
% ruby certdata2pem.rb < certdata.txt
でカレントディレクトリに *.pemファイルをとりだし
opensslの c_rehash コマンドで hash symlink を作成します。
このディレクトリを ssl_ca_path に設定することができます。
もしくは、*.pem をまとめた一つのファイルを作成しておけば
それを ssl_ca_file に設定することができます。
* mod_sslのソースに含まれている pkg.sslcfg/ca-bundle.crt
これは PEMなので、このファイルのフルパス名を ssl_ca_file に
設定することができます。
・ バージョン 0.9.5 以降の OpenSSL ライブラリは, 乱数を初期化するために幾つか
のシードを設定する必要があります.
デフォルトでは /dev/urandom があればそれを利用しますが, 無ければ w3m 内部
で生成します. もし, EGD (Entropy Gathering Daemon) または PRNGD (Pseudo
Random Number Generator Daemon) が利用できる環境でこれを使いたい場合は,
USE_EGD マクロをチェックしてみてください.
・ URL
OpenSSL - http://www.openssl.org/
PRNGD - http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html
----------------------------------------------------------------
#!/usr/bin/ruby
# Copyright (c) 2001 Fumitoshi UKAI <ukai@debian.or.jp>
# All rights reserved.
# This is free software with ABSOLUTELY NO WARRANTY.
#
# You can redistribute it and/or modify it under the terms of
# the Ruby's licence.
#
# certdata2pem.rb
if RUBY_VERSION>="1.9"
Encoding.default_external="UTF-8"
end
while line = $stdin.gets
next if line =~ /^#/
next if line =~ /^\s*$/
line.chomp!
if line =~ /CKA_LABEL/
label,type,val = line.split(' ',3)
val.sub!(/^"/, "")
val.sub!(/"$/, "")
fname = val.gsub(/\//,"_").gsub(/\s+/, "_").gsub(/[()]/, "=") + ".pem"
next
end
if line =~ /CKA_VALUE MULTILINE_OCTAL/
data=''
while line = $stdin.gets
break if /^END/
line.chomp!
line.gsub(/\\([0-3][0-7][0-7])/) { data += $1.oct.chr }
end
open(fname, "w") do |fp|
fp.puts "-----BEGIN CERTIFICATE-----"
fp.puts [data].pack("m*")
fp.puts "-----END CERTIFICATE-----"
end
puts "Created #{fname}"
end
end
system("c_rehash", ".")
|