プロジェクト

全般

プロフィール

Apache mod autoindex » 履歴 » バージョン 2

健二 酒井, 2019/11/13 00:04
手順っぽくする

1 1 健二 酒井
# Apache memo
2 1 健二 酒井
3 1 健二 酒井
## 概要
4 1 健二 酒井
5 1 健二 酒井
あったことを適当に書いてく
6 1 健二 酒井
7 1 健二 酒井
## クライアント認証とOption Index
8 1 健二 酒井
9 1 健二 酒井
### やりたい事
10 1 健二 酒井
11 1 健二 酒井
- 特定ディレクトリにクライアント認証をかけたい
12 1 健二 酒井
- https://example.com/でアクセスしたときにapacheのインデックスページを出したい
13 1 健二 酒井
14 1 健二 酒井
### 設定状況
15 1 健二 酒井
16 1 健二 酒井
こんなディレクトリを持っていたとする:
17 1 健二 酒井
18 1 健二 酒井
- DocumentRoot
19 1 健二 酒井
  - ClientVerifyDir
20 1 健二 酒井
  - FooDir
21 1 健二 酒井
  - BarDir
22 1 健二 酒井
23 1 健二 酒井
こんな設定だったりする:
24 1 健二 酒井
25 1 健二 酒井
- ディレクトリClientVerifyDirにクライアント認証をかけている
26 1 健二 酒井
- ディレクトリDocumentRootにはクライアント認証をかけていない
27 1 健二 酒井
- DocumentRootにOption +Indexがついている
28 1 健二 酒井
- index.htmlとかはない
29 1 健二 酒井
30 1 健二 酒井
### 何が起きた
31 1 健二 酒井
32 1 健二 酒井
https://example.com/でアクセスしたときにSSLのネゴシエーションに失敗する
33 1 健二 酒井
34 1 健二 酒井
エラーログはこんな感じ
35 1 健二 酒井
36 1 健二 酒井
```
37 1 健二 酒井
SSL Library Error: error:140890C7:SSL routines:ssl3_get_client_certificate:peer did not return a certificate -- No CAs known to server for verification?
38 1 健二 酒井
AH02261: Re-negotiation handshake failed
39 1 健二 酒井
```
40 1 健二 酒井
41 1 健二 酒井
結構悩んだのでメモしとく
42 1 健二 酒井
43 1 健二 酒井
### 原因(推測)
44 1 健二 酒井
45 2 健二 酒井
1. https://example.com/にアクセス
46 2 健二 酒井
1. インデックスページを生成しようとする
47 2 健二 酒井
1. DocumentRootのエントリ「ClientVerifyDir」を読もうとする
48 2 健二 酒井
1. 一方ClientVerifyDirを読むにはクライアント認証が必要
49 1 健二 酒井
   アクセスしているDocumentRootはクライアント認証の提示をブラウザに要求していない
50 2 健二 酒井
1. クライアント認証は失敗する
51 1 健二 酒井
52 1 健二 酒井
って感じなんだろうか。うーん、ディレクトリのread権限がなくて403 Forbidden的なしょぼいエラーと似ている気がする
53 1 健二 酒井
54 1 健二 酒井
### 対処
55 1 健二 酒井
56 1 健二 酒井
まず、ディレクトリ構造を変更
57 1 健二 酒井
58 1 健二 酒井
- DocumentRoot
59 1 健二 酒井
  - SecretsDir
60 1 健二 酒井
      - ClientVerifyDir
61 1 健二 酒井
  - FooDir
62 1 健二 酒井
  - BarDir
63 1 健二 酒井
64 1 健二 酒井
クライアント認証かけるディレクトリをSecretsDirより下のものたちに。
65 1 健二 酒井
66 1 健二 酒井
```
67 1 健二 酒井
<Directory "DocumentRoot/SecretDir/*">
68 1 健二 酒井
    SSLVerifyClient require
69 1 健二 酒井
</Directory>
70 1 健二 酒井
```