【IDM】Active Directory から OpenLDAP への パスワードの同期 その1 ~ パスワードを SHA1 で暗号化


当初の予定を変更し、パスワードの暗号化について、ちょっとだけ触れておきたいと思います


以下では、Active Directory に格納された DES / MD5 形式のパスワードをそのままとりだしました。取り出したまま OpenLDAPに格納すれば、生パスワードを経由することなくパスワードの同期が行えます(同期の手法については、また後日)。



【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する


同僚の田辺氏が、上記のスクリプトを PowerShell に置き換えてくれましたので、よろしければそちらも参照してください。


『【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する』PowerShell 編


さて、ここで当然の要求が出てきます。


DES や MD5 じゃなくて、SHA1 で 暗号化したいんだけど!!??


当然ですね。


暗号化と文字コード変換はなんとかなるとしても、DES / MD5 を複合化することはできませんので、事前に「生パスワード」が取得できるという前提で書きます。 


で、その暗号化と文字コード変換ですが、VBSで何とかしようとしてみたのですが…うまい方法が無く….田辺さんに懐柔されたようで悔しいのですが、PowerShell を使用することにします。


生パスワードを 「annou$01 」 とします。







PS C:\> $strPassword = “annou$01”
PS C:\> $objUTF8Enc = new-object System.Text.UTF8Encoding
PS C:\> $bytPassword = $objUTF8Enc.GetBytes($strPassword)
PS C:\> $objCrypt = new-object System.Security.Cryptography.SHA1CryptoServiceProvider
PS C:\> $bytCryptPassword = $objCrypt.ComputeHash($bytPassword)
PS C:\> $strBase64Password = [System.Convert]::ToBase64String($bytCryptPassword)
PS C:\> $strBase64Password
gFRVb2AfNnXfx2GUQe5GaEYrnJQ=


最後に表示されている gFRVb2AfNnXfx2GUQe5GaEYrnJQ= が SHA1 で暗号化されたパスワードです。



暗号化の形式を変更する場合には、SHA1CryptoServiceProvider の部分を変えてください。詳細は、以下を参照してみてください。


System.Security.Cryptography Namespace
http://msdn.microsoft.com/ja-jp/library/system.security.cryptography(en-us,VS.80).aspx


このままでは自動化ができないので、まずは、上記のPowerShellスクリプトを ps1 という拡張子でテキストファイルに保存しましょう。ここでは、cryptSha1.ps1 というファイルに保存したとします。


次に、PowerShell を起動して、以下のコマンドを入力し、自マシンで作成した ps1 ファイルを実行できるようにします。






PS C:\> Set-ExecutionPolicy RemoteSigned


その後、PowerShell を終了し、通常のコマンドプロンプトから以下のように記述しましょう。






C:\> for /f %i in (‘powershell c:\cryptsha1.ps1’) do set Sha1Password=%i


これで、環境変数 Sha1Password には SHA1 で暗号化されたパスワードが格納されます。あとは、なんとでもなりますね…。もし、バッチファイルから 上記の for コマンドを実行するのであれば、以下のように % は %% と重ねて記述してください。






for /f %%i in (‘powershell c:\cryptsha1.ps1’) do set Sha1Password=%%i


それにしても…Net Framework が使えるって….べ、便利ですね….


まずい..VBS から乗り換えてしまいそうです…..

Comments (7)

  1. 匿名 より:

    昔、「おしいれのぼうけん」ていう絵本がありました。いまでもトラウマです…ねずみばぁさん…。 そんなノスタルジックな想いはともかく、現実に戻って OpenLDAP にパスワードを同期する方法について考察します。

  2. 匿名 より:

    【IDM】パスワード同期機能の有効活用 その1 ~ パスワード同期機能とは 【IDM】パスワード同期機能の有効活用 その2 ~ Windows Server 2008 でのパスワード同期機能のセットアップ

  3. 匿名 より:

    全国の VBScript ファンの皆さん、こんにちは。 Scripting Life を楽しんでますか? ちょっと前のことになりますが、PowerShell チームの blog に以下の記事が投稿されました。

  4. 匿名 より:

    �ե꡼��������CGI��PHP������ץȤ??���ɡ�96�Υ��ƥ��꡼���鸡���Ǥ��ޤ������������ɥ�????μ»ܤˤ��͵��٤�ɾ���⤢�ꡪ ������������ץȤǤ⡢��Ͽ�����Ѥϰ���̵���Ǥ���

  5. 匿名 より:

    ある調べごとがあり、「’watch node’」 という単語を 某検索エンジンに放り込んだところ、以下の表示が。 もしかして: ‘watch nude ‘ し、し、しっ、失礼なっっっ! それはともかく、Active

  6. 匿名 より:

    ある調べごとがあり、「’watch node’」 という単語を 某検索エンジンに放り込んだところ、以下の表示が。 もしかして: ‘watch nude ‘ し、し、しっ、失礼なっっっ! それはともかく

  7. 匿名 より:

    Software Disign 2009年3月号 からいらしたみなさん、こんにちは。 Appendix 「Active Directory の基礎知識」の「UNIX用ID管理」のインストール手順を、このページで補足いたします。

Skip to main content