2017-04-21 4 views
1

私はMono(バージョン4.2.1)のコードをUbuntu 16.04.2 LTS上で実行しています。そのコードはAmazon SESを使用して電子メールを送信しようとしていません。他の検索では、モノのトラストストアに存在しない証明書が原因でエラーが発生しています。このビーイングを修正するためのコマンド:Amazon SES経由で電子メールを送信するMono 4.2コードを取得するにはどうすればよいですか?

CertMgrの-ssl SMTPS://email-smtp.eu-west-1.amazonaws.com:587 mozroots --import続い

を--ask、削除

(email-smtp.eu-west-1.amazonaws.comは、私が使用しているSMTPサーバーであるため、ポート587上で)

最初のコマンドが正常に動作し、私の店に162枚の証明書をインポートしました。 2番目のコマンドが失敗し、例外が発生します。私は間違って何をしていますか? certmgrの一般的な障害の

Unhandled Exception: 
System.IO.IOException: The authentication or decryption has failed. ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed. 
    at Mono.Security.Protocol.Tls.RecordProtocol.EndReceiveRecord (IAsyncResult asyncResult) <0x402e7020 + 0x00132> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslClientStream.SafeEndReceiveRecord (IAsyncResult ar, Boolean ignoreEmpty) <0x402e6f50 + 0x00031> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslClientStream.NegotiateAsyncWorker (IAsyncResult result) <0x402e3aa0 + 0x00225> in <filename unknown>:0 
    --- End of inner exception stack trace --- 
    at Mono.Security.Protocol.Tls.SslClientStream.EndNegotiateHandshake (IAsyncResult result) <0x402e7cf0 + 0x000ec> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) <0x402e7a40 + 0x0007f> in <filename unknown>:0 
    --- End of inner exception stack trace --- 
    at Mono.Security.Protocol.Tls.SslStreamBase.EndNegotiateHandshake (Mono.Security.Protocol.Tls.InternalAsyncResult asyncResult) <0x402e1190 + 0x0007b> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslStreamBase.NegotiateHandshake() <0x402da8b0 + 0x000b6> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslStreamBase.Write (System.Byte[] buffer, Int32 offset, Int32 count) <0x402da4d0 + 0x000af> in <filename unknown>:0 
    at System.IO.StreamWriter.Flush (Boolean flushStream, Boolean flushEncoder) <0x7f07ce354da0 + 0x000fa> in <filename unknown>:0 
    at System.IO.StreamWriter.Flush() <0x7f07ce354d70 + 0x0001f> in <filename unknown>:0 
    at Mono.Tools.CertificateManager.GetCertificatesFromSslSession (System.String url) <0x402a43e0 + 0x00357> in <filename unknown>:0 
    at Mono.Tools.CertificateManager.Ssl (System.String host, Boolean machine, Boolean verbose) <0x402a39f0 + 0x0013a> in <filename unknown>:0 
    at Mono.Tools.CertificateManager.Main (System.String[] args) <0x4029ed70 + 0x004f0> in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.IOException: The authentication or decryption has failed. ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed. 
    at Mono.Security.Protocol.Tls.RecordProtocol.EndReceiveRecord (IAsyncResult asyncResult) <0x402e7020 + 0x00132> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslClientStream.SafeEndReceiveRecord (IAsyncResult ar, Boolean ignoreEmpty) <0x402e6f50 + 0x00031> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslClientStream.NegotiateAsyncWorker (IAsyncResult result) <0x402e3aa0 + 0x00225> in <filename unknown>:0 
    --- End of inner exception stack trace --- 
    at Mono.Security.Protocol.Tls.SslClientStream.EndNegotiateHandshake (IAsyncResult result) <0x402e7cf0 + 0x000ec> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) <0x402e7a40 + 0x0007f> in <filename unknown>:0 
    --- End of inner exception stack trace --- 
    at Mono.Security.Protocol.Tls.SslStreamBase.EndNegotiateHandshake (Mono.Security.Protocol.Tls.InternalAsyncResult asyncResult) <0x402e1190 + 0x0007b> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslStreamBase.NegotiateHandshake() <0x402da8b0 + 0x000b6> in <filename unknown>:0 
    at Mono.Security.Protocol.Tls.SslStreamBase.Write (System.Byte[] buffer, Int32 offset, Int32 count) <0x402da4d0 + 0x000af> in <filename unknown>:0 
    at System.IO.StreamWriter.Flush (Boolean flushStream, Boolean flushEncoder) <0x7f07ce354da0 + 0x000fa> in <filename unknown>:0 
    at System.IO.StreamWriter.Flush() <0x7f07ce354d70 + 0x0001f> in <filename unknown>:0 
    at Mono.Tools.CertificateManager.GetCertificatesFromSslSession (System.String url) <0x402a43e0 + 0x00357> in <filename unknown>:0 
    at Mono.Tools.CertificateManager.Ssl (System.String host, Boolean machine, Boolean verbose) <0x402a39f0 + 0x0013a> in <filename unknown>:0 
    at Mono.Tools.CertificateManager.Main (System.String[] args) <0x4029ed70 + 0x004f0> in <filename unknown>:0 

答えて

0

一つsudoでそれを実行していない:

は、ここでスタックトレースです。それはExceptionを生成します。これは本当に誤解を招くものです。 MacOSの/ Linuxの

certmgr -ssl smtps://email-smtp.eu-west-1.amazonaws.com:587 

は、あなたが投稿し正確なエラーを生成します。で

sudo certmgr -ssl smtps://email-smtp.eu-west-1.amazonaws.com:587 

結果:

X.509 Certificate v3 
    Issued from: C=US, O=Equifax, OU=Equifax Secure Certificate Authority 
    Issued to: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA 
    Valid from: 5/21/2002 4:00:00 AM 
    Valid until: 8/21/2018 4:00:00 AM 
    *** WARNING: Certificate signature is INVALID *** 
Import this certificate into the CA store ?yes 

X.509 Certificate v3 
    Issued from: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA 
    Issued to: C=US, O=Google Inc, CN=Google Internet Authority G2 
    Valid from: 4/1/2015 12:00:00 AM 
    Valid until: 12/31/2017 11:59:59 PM 
    *** WARNING: Certificate signature is INVALID *** 
Import this certificate into the CA store ?yes 

X.509 Certificate v3 
    Issued from: C=US, O=Google Inc, CN=Google Internet Authority G2 
    Issued to: C=US, S=California, L=Mountain View, O=Google Inc, CN=smtp.gmail.com 
    Valid from: 4/12/2017 1:28:00 PM 
    Valid until: 7/5/2017 1:28:00 PM 
Import this certificate into the AddressBook store ?yes 

3 certificates added to the stores. 

注:インポートの質問に答えるyesをしていることを確認しますsudoを使って

+0

私はsudoで実行しようとしましたが、まったく同じエラーが発生しました。私の最初の試み(sudoなし)がシステム内の何かを壊している可能性はありますか?どのように私はそれらの変更をロールバックしますか? – Cois

+0

@Coisいいえ、それはまったく混乱してはいけません...私はsudoを使わずにsudoを実行してもう一度試してみました。私は3つの証明書を入手して、彼らはすでにCAストアに入っています... – SushiHangover

+1

@Cois個人的に、 TLS 1.1/1.2のサポートを追加するために、GoogleのBoringSSLが管理対象のプロバイダを置き換えるために追加されたので、私はモノ4.8に移行する予定でした。マネージドプロバイダーから離れていくと多くの問題が取り除かれ、システム証明書ストアが使用されているのでmozrootsを使用する必要はなくなりました... Amazonはまだsmtpサーバー上でtls1.0/1.0(少なくとも現在は)をサポートしていますのでmono 4.2 *する必要があります.... – SushiHangover

関連する問題