• 締切済み

既存のIISのSSL証明書からxmail用のserver.key,server.certの作り方

こんにちは 現在Windows2003 Server上でIIS+xmail 1.26で運用しています。 このたびxmailでpops通信、smtps通信をするために設定をしているのですが 必要なserver.key,server.certを作る方法がうまく行かず悩んでいます。 IIS上のウェブサイトでSSL証明書を取得済みなのでそこから作れ出せないかな?といろいろググって試してみたのですが 以下の手順でうまくいきそうなのに xmail上は keyとcertが正しいペアではない旨のエラーになってしまいます。 どこの手順がおかしいのか? もしくは正しく設定できる別の方法があれば教えてください。 現在の手順 ・IISからpfxファイルをエキスポート(cert.pfx) ・OpenSSLで以下のコマンドを用いる openssl pkcs12 -in cert.pfx -out cert.txt ・cert.txtの中身をテキストの前半をコピペして server.key 後半をコピペしてserver.certを作成 ・OpenSSLで以下のコマンドを用いる openssl rsa -in server.key -out server.key ・上記をMAILROOTに設置 以上よろしくお願いします。

みんなの回答

  • kadusaya
  • ベストアンサー率53% (8/15)
回答No.2

No.1です。 ベリサインなどから証明書を取得しているのであれば、「証明書要求」は作られたのですよね。では、 ・なぜ証明書要求という手順が必要なのか。 ・証明書要求から、どーやって証明書を作成するのか。 を考えてみてください。 それが理解できれば、「証明書を改ざんしても役に立たない」ということが分かるかと思います。 > 自己証明であればやり方はわかります。 なぜ「自己証明でやれ」と言っているかを考えてください。 「やり方を知っている」のと「なぜそうしなければいけないのかを知っている」のは違います。 メールに電子署名をするのであれば商用認証局から証明書を取得するのも選択肢の一つですが、メールサーバーとのPOPS通信・SMTPS通信であれあば自己証明であるべきです。

yukitakao
質問者

補足

>ベリサインなどから証明書を取得しているのであれば、「証明書要求」は作られたのですよね。 証明書要求は新規取得時には作成しました。 が、今回の質問は取得済みの証明書をエクスポートすることに関する質問です。 >・なぜ証明書要求という手順が必要なのか。 >・証明書要求から、どーやって証明書を作成するのか。 >を考えてみてください。 >それが理解できれば、「証明書を改ざんしても役に立たない」という>ことが分かるかと思います。 言いたいことはわかります。 もしエクスポートできたら証明書取る意味がない、ってことが言いたいんですよね? ですが 実際問題 IISで取得済みの証明書を別のサーバーの別のIISにエクスポートすることはできました。 これは実際に私が行いクライアントからアクセスしても証明書のエラーなくできている事実です。 またエクスポートしたpfxファイルを opensslを使ってコンバートすることもできます。 ■IISからエクスポートしたキーペアをapacheにインポートする http://www.kishiro.com/apache/import_iis_pfx.html >メールに電子署名をするのであれば商用認証局から証明書を取得するのも選択肢の一つですが、メールサーバーとのPOPS通信・SMTPS通信であれあば自己証明であるべきです。 個人で使うものであれば自己証明もいいと思いますが 複数のユーザーが使うWEBサーバーで自己証明ではメーラーの設定、証明書のインストールなど各ユーザーに説明が大変ですので公的証明書を使おうとしているわけです。 またワイルドカードの証明書(*.hoge.comなどどんなサブドメインでも利用可能)を使っているのだからそれを使い回そうというのはおかしい考えでしょうか?

  • kadusaya
  • ベストアンサー率53% (8/15)
回答No.1

> どこの手順がおかしいのか? うぅ~んと、根本的に間違ってるかな。(^^ゞ ・電子証明書(ルート証明書とSSL証明書の関係) ・RSA暗号方式(秘密鍵と公開鍵) ・公開鍵基盤(PKI) ・ActiveDirectory でもう一回勉強し直してみてね。 > 別の方法があれば教えてください。 「電子証明書作成ソフトウェア“k9pca”」 http://www.kadusaya.co.jp/html2/service231.htm で証明書は作れるけど・・・、電子証明書そのものが理解できていないとムズカシイかも。

yukitakao
質問者

補足

コメントありがとうございます。 こちらのソフトは自己証明を行う場合に使うものですよね? ではなくて既存の証明書を流用したいのですが・・・ 自己証明であればやり方はわかります。 とりあえず現状をもう少し詳しく説明しますと *.hoge.comといった ワイルドカードの証明書を取得済みでこの証明書をメールサーバーにも使いたいわけです。 実際 別サーバーで取得したこのワイルドカードのSSL証明書を複数のWEBサーバーに移管することはできましたし メールサーバーにもできるはずだと思うのですが・・・

関連するQ&A

  • 秘密鍵の比較について

    下記2つの秘密鍵を比較しようとしています。   1.CSR作成時に同時に作成される秘密鍵   2.認証局より受領した証明書と1.の秘密鍵より作成した.p12ファイルから、下記のコマンドで抽出した秘密鍵      openssl pkcs12 -in input.pfx -nocerts -out output_key.pem(証明書名はサンプルです。) 同じ秘密鍵なはずなのに、catで開いた証明書の中身が合致しません。 なぜ合致しないかわかる方ご教示いただけないでしょうか。

  • CGI実行時のコンソール内容の出力先について

    xreaでPerlのCGIを使って、シェルスクリプトを実行しているのですが、なぜか、どうしても余分なメッセージが出力されます。 具体的には下記の内容をCGIが呼び出されたときにPerlに実行してもらいます。 system "openssl smime -sign -in infile -out outfile -signer server.crt -inkey server.key -certfile cert-chain.crt -outform der -nodetach"; この時、CGIの出力で下記の内容が意図せずに出力されてしまいます。このメッセージを消そうといろいろ試してみましたが、効果がなく、あきらめています。 また、このメッセージはコンソールからPerlを呼び出したときには表示されず、CGIの時だけ表示されます。 unable to write 'random state' 試しに以下のように変更しても、ファイル、変数には何も出力されず、引き続き上記のメッセージがCGIから出力されます。どうもopensslが出力しているメッセージではないようです。システムメッセージなのでしょうか。 system "openssl smime -sign -in infile -out outfile -signer server.crt -inkey server.key -certfile cert-chain.crt -outform der -nodetach > error"; $error = `openssl smime -sign -in infile -out outfile -signer server.crt -inkey server.key -certfile cert-chain.crt -outform der -nodetach`; 上記のメッセージが出力されると、正しく動かないため、変数に取り込むなりして、CGIに出力させたくないのですが、可能でしょうか。 何卒よろしくお願いいたします。

  • Windows2008サーバのFAXサーバ

    色々検索してみたのですが、Windows2008サーバでFAXサーバのインストール手順が分かるものが見つかりませんでした。以下のURL以外でインストール手順が分かるものがあれば教えていただけますでしょうか。 実際Windows2008サーバR2を使って下記のURLの手順通りにFAXサーバをインストールしようとしましたが、手順には途中IISのインストールも含まれています。 IISは既にインストールされています。 再度インストールを行うと、上書きインストールされてしまう可能性があります。 IISのインストールの部分をスキップしてインストールすることは可能でしょうか? http://sugizo.wordpress.com/2010/02/25/windows-2008-server-install-and-configure-fax-server/

  • SSL導入でCSRを生成時のPEMフレーズ

    ■環境 サーバー:Apache + mod_ssl 初めてSSLサーバー証明をインストールします。 色んなサイトを見て勉強しながらやっているのですが、 どうしても腑に落ちないというか、どうもすっきりしない点がありましたので、 お知恵をお借りしたく、質問させて頂きました。 気になる部分はCSRを生成するコマンド、以下となります。 # mkdir /usr/local/certs # cd /usr/local/certs # openssl req -new -newkey rsa:2048 -nodes -keyout 「名前」.key -out 「名前」.csr Generating a 2048 bit RSA private key 参考にしたサイト http://www.digicert.ne.jp/howto/csr/csr_apache.html http://cspssl.jp/support/csr_apache.html 上のコマンドだと、PEMフレーズを入力せずに、2ファイルが生成されます。 しかしながら、その他の様々なサイトでは 先にパスフレーズを登録して、例えば、、 # openssl req -new -key 「名前」.key -out 「名前」.csr Enter pass phrase for server.key: このようなコマンドに続いてパスフレーズを聞かれるという形になっています。 また各種サイトには、PEMフレーズは省略も出来るとあります。 セキュリティ度は下がるが、再起動時に何度も入力しなくて済むという利便性があるとか。 もしかすると前者では、PEMフレーズが省略されたCSRを生成しているのかと 考えたのですが、私の考えで合っているのでしょうか。 それとも、前者のCSRで認証局に申請した物は、作り直さなくてはならないでしょうか。 素人質問で大変申し訳ないと思いますが、 ちょっと頭が混乱してしまってまして どなたかヒントを頂ければありがたいです。 すいませんがよろしくお願いします。

  • サーバー証明書の有効期限の設定方法について

    はじめまして。 現在Windows2003Serverで独自CAを使い、SSL通信を行っております。 しかし、このSSL通信に使用するサーバー証明書の有効期限が1年に設定されてしまいます。 有効期限を設定できるような設定を探したのですが見つかりませんでした。 有効期限の設定方法(5年位にしたい)について知っている方、設定方法について教えてください。 尚、現在のSSL設定方法は以下の通りです。 ・独自CAサーバー:Windows2003Server ・Webサーバー:Windows2003Server 1.WebサーバーのIISにてサーバー証明書(AAA.TXT)を作成 2.独自CAサーバーからWebページにてAAA.TXTを使いサーバー証明書を発行 3.独自CAサーバーの認証機関にて保留中の証明書を発行 4.独自CAサーバーのWebページにて証明書のダウンロード(AAA.CER) 5.WebサーバーのIISにてサーバー証明書(AAA.CER)をインストール

  • Apacheでhttpd-ssl.confエラー

    当方、windows7 32bitでwwwサーバを組んでいる超初心者です。 apacheは2.2.25、Active Perlは5.16.3.1で OpenSSLは1_0_1です。、 c/apache softoware Foundation c/perl c/openssl 以上の場所にインストールしています。 http://tako.jugem.cc/?eid=719 ここのサイトの説明通りにやりました。但し、openssl.cfg は c/apache softoware Foundation/apache2.2/conf/sslに入れましたが。 上記のサイトで > openssl req -config openssl.cfg -new -out ./ssl.key/server.csr 色々聞かれるので埋める とあり、色々埋めました。 Apacheのhttpd.confの変更、 httpd-ssl.confの変更も行いました。↓ SSLCertificateFile "C:/Apache Software Foundation/Apache2.2/conf/ssl/server.crt" SSLCertificateKeyFile "C:/Apache Software Foundation/Apache2.2/conf/ssl/server.key" と変更しました。 server.crtファイルも server.keyファイルも上記の場所にあるのですが、 これでapacheを起動すると The requested operation has faild! とエラーメッセージが出てしまいます。 httpd-ssl.confを有効にしなければ、apacheは普通に動いてくれます。 何が足りないのか、私には解りません。 考えうるエラーの原因が思い当たったらご教授願います。

  • openssl_pkcs7_encryptについて

    もろもろ初心者です。 PHPを使ってセキュアなメールを送りたくて、openssl_pkcs7_encryptが使えるかなと思ってやってみたのですが、やり方がよく分かりません。 とりあえず、以下のように書いてみたら、失敗しました。 $key = file_get_contents("hoge.cer"); if(openssl_pkcs7_encrypt("hogehoge",realpath("enc.txt"),$key,array("To"=>"mailaddress","From"=>"HQ","Subject"=>"Eyes only"))){ echo"成功"; }else{ echo"失敗"; } hoge.cerは、Comodo FREE Personal Secure Email CertificateのやつをBase 64 encoded X.509でエクスポートしたものです。 mailaddressの部分は実際はComodoで登録したメールアドレスと記述していますが、教えてgooではメールアドレスを記述すると質問が中々反映されないので、便宜上mailaddressとしました。 何がダメか原因を教えてください!

    • ベストアンサー
    • PHP
  • サーバ証明書の申請に必要なCSRの生成がうまくできずに困っています。

    サーバ証明書の申請に必要なCSRの生成がうまくできずに困っています。 以下のサイトを参考にして、同じ手順でCSRを生成したところ http://www.rapidssl-jp.com/support/support_csr01.html 本来であれば以下のようなCSRが生成されなければいけないのですが -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDDIB53t0n    -- 以下省略 -- -----END RSA PRIVATE KEY----- 中身を確認すると以下のようになってしまいます。 Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, ST=XXX, L=XXX, O=XXX inc., OU=XXX, CN=www.XXX.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c1:8b:06:   -- 以下省略 -- Exponent: XXXXX (0x10001) Attributes: a0:00 Signature Algorithm: sha1WithRSAEncryption 02:77:52:   -- 以下省略 -- 特にエラーは出す、コピペで間違いのないようにコマンドを入力しているはずなのですが、 理由がわからず大変困っております。 もし原因がわかる方がいらっしゃったら、ご教授頂ければと思います。 何卒、よろしくお願い致します。

  • Apache起動時にエラー

    質問があります。 ApacheをSSLで起動し、IEからアクセスしようとしたら反応が遅く また、エラーログが大量に出ています。その後、表示ができませんと IEから出ています。 【ログ内容】 [notice] child pid XXXX exit signal Segmentation fault (11) また、Googleで調べたら、勘違いだったら申し訳ありません。 PHPからみで出るとかあったのですが、今回、とくにインストールしていません。知っている方が、いらっしゃったら教えてください。 環境としては、 OS Solaris10 Apache2.2.14とOpenSSL0.9.8lをソースでインストール 特に問題なくインストールできています。 切り分けで、OpenSSLをサンフリーからパッケージでインストールし Apacheをソースで再度、コンパイルしても現象は一緒でした。 OpenSSLの鍵・証明書の作成としては以下を実行 openssl genrsa -des3 -out server.key 1024 openssl rsa -in server.key -out server.key openssl req -new -key server.key -out server.csr -days 365  openssl x509 -in server.csr -out server.pem -req -signkey  server.key -days 365 httpd-ssl.confの設定 SSLCertificateFile /usr/local/apache2/conf/server.crt ↓ SSLCertificateFile /usr/local/apache2/conf/server.pem SSLCertificateKeyFile /usr/local/apache2/conf/server.key ↓(そのまま) SSLCertificateKeyFile /usr/local/apache2/conf/server.key http.confの設定 #Include conf/extra/httpd-ssl.conf ↓ Include conf/extra/httpd-ssl.conf 以上、よろしくお願いします。

  • PostgresSQLのテーブルを他のサーバにコピーしたい!

    すいませーん!教えてください! Linux8.0でPostgresSQLを使っています。 サーバ内にあるDBのテーブルを、他のサーバにコピー、もしくは丸ごと転送するやりかったってありますか? あったら教えてください。 こちら、linuxは初心者。SQLも一般的なコマンドしか知らないので、出来れば詳しい手順とコマンドを教えていただければ助かります。 テーブルをtxtファイルにして…とか聞いたんですが。よくわからないのです。