openssl で第四種オレオレ証明書

 

第四種オレオレ証明書 を makecert や selfssl じゃなくて openssl でやってみる。

 

手順の概要はこんな感じ

  • web 鯖の持ち主の立場で、、、身元保証 (?) 要求を作る
  • オレオレ認証局 (?) を作る
  • 認証局職員の立場で、、、身元保証要求にサインする
  • web 鯖の持ち主の立場で、、、証明書を IIS (?) に放り込む
  • web 鯖の持ち主の立場で、、、証明書を web サイトと関連付ける

 

web 鯖の持ち主の立場で、、、身元保証 (?) 要求を作る

身元保証要求を作ります。

 

左側ペインでサーバーを選択。中央のペインで [サーバー証明書] をダブルクリック。

右側ペインで [証明書の要求の作成] をクリック。

それらしく、適当に入力。

変更せずにそのままで進む。

拡張子は何でもいいので適当にファイル名を付けて保存。

生成した身元保証要求 (?) ファイルはこんな感じ。

生成した身元保証 (?) 要求を認証局に提出してください。
(今回は何もしなくていいです)

 

オレオレ認証局 (?) を作る

ベリサイン、サイバートラスト、グローバルサインのような認証局 (?) を自分の PC に作ります。

 

IIS と同じ PC でも別の PC でも構わないので cygwin をインストール。
今回は IIS が動いている PC に cygwin を入れてます。
cygwin の setup.exe は http://www.cygwin.com/ から入手。

cygwin の setup.exe を起動。

インストール時に色々質問されるけど説明は省略。

Net の左側の印をクリックして、Net を広げる。

Net の中に openssl と書いてある行を探し、謎の印をクリックし、Skip と表示されているのをバージョン番号っぽい表示に変えて、左下の Next ボタンをクリック。

cygwin のシェルを起動。

user4@peach ~
$ /usr/ssl/misc/CA.sh -newca
CA certificate filename (or enter to create)
何も入力せず Enter キーをたたく
Making CA certificate …
Generating a 1024 bit RSA private key
………………++++++
…++++++
writing new private key to ‘./demoCA/private/./cakey.pem
Enter PEM pass phrase: それっぽいパスワード (password1) を入力する
Verifying – Enter PEM pass phrase: 同じパスワード (password1) を入れる
—–
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) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Fujisawa
Organization Name (eg, company) [Internet Widgits Pty Ltd]:aiueo
Organizational Unit Name (eg, section) []:operation
Common Name (eg, YOUR name) []:yamada
Email Address []:yamada@example.jp

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: 何も入力せず Enter キーをたたく
An optional company name []: 何も入力せず Enter キーをたたく
Using configuration from /usr/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/./cakey.pem: 先ほど入力したパスワード (password1) を入れる
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 0 (0x0)
        Validity
            Not Before: Dec 22 17:14:12 2009 GMT
            Not After : Dec 21 17:14:12 2012 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Kanagawa
            organizationName          = aiueo
            organizationalUnitName    = operation
            commonName                = yamada
            emailAddress              = yamada@example.jp
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                E1:7A:A3:04:7A:F0:83:09:84:D5:28:FD:88:05:C1:18:12:99:CD:0A
            X509v3 Authority Key Identifier:
                keyid:E1:7A:A3:04:7A:F0:83:09:84:D5:28:FD:88:05:C1:18:12:99:CD:0
A

Certificate is to be certified until Dec 21 17:14:12 2012 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated

 

認証局職員の立場で、、、身元保証要求にサインする

-days 3650 で 10 年先。
-in /cygdrive/e/www.tryiis7.net.csr で身元保証要求ファイルを指定。
身元保証した結果は -out /cygdrive/e/www.tryiis7.net.cer に出来上がります。

user4@peach ~
$ openssl.exe x509 -req -days 3650 -in /cygdrive/e/www.tryiis7.net.csr -CA ./de
moCA/cacert.pem -CAkey ./demoCA/private/cakey.pem -CAcreateserial -out /cygdriv
e/e/www.tryiis7.net.cer

Signature ok
subject=/C=JP/ST=Nara/L=Yamato-Koriyama/O=2nd/OU=Sales/CN=www.tryiis7.net
Getting CA Private Key
Enter pass phrase for ./demoCA/private/cakey.pem: 先ほど入力したパスワード (password1) を入れる

 

身元保証した結果がこれ。

 

web 鯖の持ち主の立場で、、、証明書を IIS (?) に放り込む

 

[証明書の要求の完了] をクリック。

認証局に署名してもらった結果を取り込みます。
[Friendly name] には適当な文字列を入れる。

証明書が増えました。

 

web 鯖の持ち主の立場で、、、証明書を web サイトと関連付ける

 

web サイトを右クリックして、[バインドの編集] をクリック。

[https]、[未使用の IP アドレスすべて]、[443] を選んで、ドロップダウンで証明書を選ぶ。

おめでとうございます。10 年先まで有効なオレオレが web サイトに導入されました。

【IIS 6 の FTP サービス】 「匿名接続を許可する」チェックボックスのオン・オフを調べる

FTP サイト (複数存在する) の「匿名接続を許可する」のオン・オフを調べましょう。

 

 

VBScript を使って WMI クエリーを投げる方法

クエリーを投げる方法は アフィ Windowsサーバークック の付録 B 「WMI の紹介」もしくは

http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct04/hey1013.mspx を参考にしてください。

  • ExecQuery でクエリーを投げる
  • For Each でループを回す

 

完成したスクリプトと実行結果

先にスクリプトをご覧ください。説明は後で。

C:\work>type script.vbs
‘ IIS 6.0 FTP サービスの「匿名接続を許可する」チェックボックスのオン・オフを調べる。
‘ 2009/9/1 22:30 新規作成

Option Explicit

Dim strComputer
Dim objWMI
Dim colSettings
Dim objSetting

strComputer = "."
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\microsoftIISv2")
Set colSettings = objWMI.ExecQuery("select * from IIsFtpServerSetting")
For Each objSetting in colSettings
    WScript.Echo "—– " & objSetting.ServerComment
    WScript.Echo "AllowAnonymous: " & objSetting.AllowAnonymous
    WScript.Echo "Name: " & objSetting.Name
Next

Set objWMI = Nothing

C:\work>cscript //Nologo script.vbs
—– 既定の FTP サイト
AllowAnonymous: True
Name: MSFTPSVC/1
—– ftp1
AllowAnonymous: True
Name: MSFTPSVC/72986052
—– ftp2
AllowAnonymous: False
Name: MSFTPSVC/72986053

C:\work>

 

  • winmgmts ってのはモニカと呼ぶらしいですが、僕は詳しいことは知りません。
  • root\microsoftIISv2 ってのは WMI の名前空間らしいですが、僕は詳しいことは知りません。
  • ExecQuery で WMI クエリーを投げてコレクションを得て、For Each でループを回します。これが基本パターンですが基本パターンが思い出せなくて自宅に戻ってこれを書いています。

Q. IIsFtpServerSetting と AllowAnonymous はどこから仕入れたか?
A. Metabase Explorer を適当に触って探します。

 
5005 で AllowAnonymous ?
あやしい。これかもしれない。クラス (?) は IIsFtpServer か・・・

  ならば、たぶん これ だわ。

念のため、AllowAnonymous はどのレベルで設定可能か Configurable Locations を見ておきましょう。。。。ああ FTP サイト単位ですね。(ディレクトリ単位では設定できないのですね)

調べる際はこんな感じ。

 

ちなみに こちらは WMI じゃなくて ADSI のリファレンスです。

以上!

(以下はおまけ)

 

 

 

Metabase Explorer

調べ物をするのに必要なので Metabase Explorer をインストールしてください。

http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&displaylang=en

Internet Information Services (IIS) 6.0 Resource Kit Tools をダウンロードしてインストール。

Metabase Explorer

 

WMI CIM Studio

今回の作業では CIM Studio は使いませんでしたが、せっかく画像採取したので消さずにそのままブログにアップします。

http://www.microsoft.com/downloads/details.aspx?FamilyID=6430f853-1120-48db-8cc5-f2abdc3ed314&DisplayLang=en 

WMI Administrative Tools をダウンロードしてインストール。

WMI CIM Studio

変更前

変更後 root\microsoftiisv2

IIS 6 関連の調べ物をする際は root\microsoftIISv2 ネームスペースを選んだください。

 

メモ (その 1)

メモ (その 2)

 

(2009/9/4 追記) PowerShell でやるなら

PS C:\Documents and Settings\Administrator> Get-WmiObject -Query "select * from
IIsFtpServerSetting" -Namespace "root\microsoftiisv2" | Format-list servercommen
t, Allowanonymous, name

servercomment  : 既定の FTP サイト
Allowanonymous : True
name           : MSFTPSVC/1

servercomment  : 001
Allowanonymous : True
name           : MSFTPSVC/164850

servercomment  : 002
Allowanonymous : False
name           : MSFTPSVC/164851

PS C:\Documents and Settings\Administrator> Get-WmiObject -Query "select * from
IIsFtpServerSetting" -Namespace "root\microsoftiisv2" | Format-table servercomme
nt, Allowanonymous, name

servercomment                          Allowanonymous name
————-                          ————– —-
既定の FTP サイト                                True MSFTPSVC/1
001                                              True MSFTPSVC/164850
002                                             False MSFTPSVC/164851

PS C:\Documents and Settings\Administrator>

ユーザーのプロパティを wmic を使って変更する方法

それぞれ、日本の Windows だと・・・
(1) ユーザーは次回ログオン時にパスワードの変更が必要
(2) ユーザーはパスワードを変更できない
(3) パスワードを無期限にする
(4) アカウントを無効にする
(5) アカウントのロックアウト

 

wmic を使ってチェックボックスをオンにするには・・・

(1)
(2) wmic useraccount where (Name = "user4") set PasswordChangeable = false
(3) wmic useraccount where (Name = "user4") set PasswordExpires = false
(4) wmic useraccount where (Name = "user4") set Disabled = true
(5)

(1) は wmic ではどうやるかわかりません。net user user4 newP@ssw0rd または net user user4 /random などを実行するとオフにはできます。

(5) を操作 (オンにする・オフにする) する方法は不明。