Compartilhar via


【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.UTF8EncodingPS C:\> $bytPassword = $objUTF8Enc.GetBytes($strPassword)PS C:\> $objCrypt = new-object System.Security.Cryptography.SHA1CryptoServiceProviderPS C:\> $bytCryptPassword = $objCrypt.ComputeHash($bytPassword)PS C:\> $strBase64Password = [System.Convert]::ToBase64String($bytCryptPassword)PS C:\> $strBase64PasswordgFRVb2AfNnXfx2GUQe5GaEYrnJQ=

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

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

System.Security.Cryptography Namespace
https://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

  • Anonymous
    January 01, 2003
    The comment has been removed

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

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

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

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

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

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