2008年2月18日月曜日

ASP.NET が動かない

以前 ASP.NET プロジェクトで発生した奇妙な現象と、その対処法をメモしておきます。

現象:
VisualStudio2005の開発環境下ではテストサーバで正しく動作するのに、実際に XP Pro SP2 上の IIS 5.1 に発行して当該 .aspx を実行すると以下のようなエラーが発生する。

The XML page cannot be displayed

Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.

--------------------------------------------------------------------------------

A name was started with an invalid character. Error processing resource 'http://localhost/IssueTracker/Default.aspx'. Line...
...

原因:

何らかの理由で ASP.NET のバージョンが正しく IIS メタデータに登録されていなかった。恐らく VS2005 のインストールと IIS 5.1 のインストール順序による不整合。

対処法:

  1. [Control Panel] - [Administrative Tools] - [Internet Information Services] で IIS 管理コンソールを開き、問題の発生する .aspx ファイルの格納されている仮想フォルダを選択し、右クリックする。当該フォルダのプロパティウィンドウが表示されるので、ASP.NET タブを選択する。

  2. 右のように、ASP.NET Version 欄が空白になっていたので、適切なバージョンをコンボボックスから選択する。

通常はこれで動作するようになるはずだが、もし別のエラー (Failed to access IIS metabase.) が表示されるようなら、IIS のメタベースにも不整合が生じているので、以下の手順でメタベースの再構築を行う。
  1. 上記で設定したバージョンの .NET Framework フォルダ (%systemroot%\Microsoft.NET\Framework\<versionNumber>) に移動する。

  2. 当該フォルダにある aspnet_regiis.exe を、以下のように実行する。

   aspnet_regiis.exe -ga ASPINET   

以上で、当該 .aspx は動作するようになるはずです。

参考リンク:
A name was started with an invalid character
ローカルIISWebサイトを実行したら"IISメタベースにアクセスできませんでした”というエラーが表示されます。

2008年2月13日水曜日

S/MIME と証明書の登録

弊社では S/MIME 対応の製品を幾つかリリースしています。この S/MIME 製品をご利用いただくことで、電子メールに署名をしたり、暗号化を行うことができます。署名や暗号化には証明書が必要となります。証明書は Verisign 社や Thawte 社等から購入することもできますが、自己署名した証明書を生成し利用することも可能です。自己署名証明書は弊社製品に含まれている CertMgr コンポーネントでも作成可能です。

作成した証明書は、利用する電子メールソフトウェアから利用できるよう登録されなければなりませんが、証明書の管理機構は必ずしも共通化されているわけではありません。例えば Microsoft Outlook であれば、Windows の「インターネットオプション」経由で「証明書ストア」に登録すれば利用可能となりますが、Mozilla Thunderbird はこのデータは参照せず独自の管理機構を使用しますので別途登録が必要です。その他のメールソフトウェアではまた別の機構への登録が必要かもしれません。

以下に Outlook および Thunderbird のための証明書登録方法の一例を示しておきます。どちらも証明書は .pfx ファイルの形で取得しているものと仮定しています。

Outlook の場合(Windows 証明書ストアへの登録)


1. Control Panel から Internet Options を起動し "Content" タブを開きます。
2. タブウィンドウ中ほどにある "Certificates" ボタンをクリックし Certificates ダイアログを表示します。
3. "Import..." ボタンをクリックし Certificate Import Wizard を起動します。
4. "Next >" ボタンをクリックしファイルインポート画面に移動し、証明書ファイル (.pfx) を指定します。
5. "Next >" ボタンをクリックすると Password 画面が表示されますので .pfx ファイルのパスワードを入力します。必要に応じてその他のオプションを指定します。
6. "Next >" ボタンをクリックすると Certificate Store 画面が表示されます。ここでは、当該証明書をどのストアに登録するかを指定できます。
7. "Next >" ボタンをクリックすると確認画面が表示されますので、登録内容を確認し問題なければ Finish ボタンをクリックし登録処理を実行します。

Thunderbird の場合


1. Thunderbird のメニューから [Tools] - [Options...] - [Advanced] で Certificates タブを選択します。
2. "View Certificates" ボタンをクリックし、Certificate Manager を起動します。
3. "Import" ボタンをクリックすると読み込むファイル名を尋ねられるので、.pfx ファイルを指定します。
4. "Please enter the master password for the Software Security Device." と尋ねられるので、パスワードを入力します。既定値では現在の Thunderbird メールアカウントのパスワードになっています。
5. 続いて "Please enter the password that was used to encrypts this certificate backup." と尋ねられるので、当該 .pfx ファイルのパスワードを入力します。
6. 全て正しく処理されれば "Successfully restored your security certificate(s) and private key(s)." と表示され証明書が Thunderbird の Certificate Manager に登録されます。

2008年2月12日火曜日

Gmail への SMTP 接続について

少し前のことになりますが、弊社製品を利用して Gmail 経由でメール送信する方法の有無の問い合わせが、複数の異なる国の異なるお客様から立て続けに数件ありました。(特定の業界では Gmail 利用が現在のトレンドなんでしょうか??)

それはさておき、Gmail では SMTPS を使用することになりますので、弊社 SSL 製品をご利用頂くことでメール送信を行うことができます。以下にコード例を示します。
       Smtps smtps1 = new Smtps();
 
 …【中略】…
 
smtps1.MailServer = "smtp.gmail.com";
smtps1.MailPort = 587;
smtps1.User = <Gmail ユーザ名>; // ex) "abc@gmail.com";
smtps1.Password = <Gmail パスワード>;
smtps1.SSLStartMode = SmtpsSSLStartModes.sslExplicit;

smtps1.SendTo = <受信者アドレス>;
smtps1.From = <送信者アドレス>; // ex) "abc@gmail.com";
smtps1.Subject = "test from IP*Works! SSL V8";

smtps1.MessageText = "Hello, world!\r\nThis is just a test.\r\n";

smtps1.Send();

以上、ご参考まで。

2008年2月4日月曜日

証明書の有効期限の設定

弊社の SSL 製品等のセキュア製品では CertMgr というコンポーネントを提供しており、各種証明書のインポートやエクスポートの他、証明書の生成をサポートしています。

証明書の生成ではプロパティで各種設定を行います。証明書の失効期日は CertExpirationDate プロパティ (V8 では Certificate.ExpirateionDate フィールド) で参照できますが、このプロパティは読み取り専用で設定できません。

この値は、Config 設定の CertValidityTime で設定します。既定値は 365 (日) になっています。この値を 730 にすれば生成される証明書の有効期間は730日 (2年) になります。