none
Is Windows Live Writer compatible with SSL?

    Question

  • Hello,
           I recently reconfigured my self-hosted WordPress blog to use SSL with a self-signed certificate . I am able to login and view my WP admin. and blog postings via https: but when I tried to reconfigure my blog account in Windows Live Writer, I am getting the following error after typing in the blog URL (and location of xmlrpc.php), username, and password:

    "Network Connection Error - Error attempting to connect to blog at:
    https://john-time.com/blogging/xmlrpc.php

    The underlying connection was closed: Could not establish trust relationship
    for the SSL/TLS secure channel

    You must correct this error before proceeding"

    When I browse to this file (xmlrpc.php) in Firefox and IE, I get the following:
    "XML-RPC server accepts POST requests only."
    so I know that this file is still accessible via https, so my question is, does Windows Live Writer support SSL or SSL with self-signed
    certificates?

    Below is the output from my Windows Live Writer.log file:
    WindowsLiveWriter,1.4060,None,00025,11-Feb-2010 16:57:13.064,"== BEGIN WebException =====================",""
    WindowsLiveWriter,1.4060,None,00026,11-Feb-2010 16:57:13.064,"Status: TrustFailure",""
    WindowsLiveWriter,1.4060,None,00027,11-Feb-2010 16:57:13.064,"System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
       at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)
       at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
       at System.Net.TlsStream.CallProcessAuthentication(Object state)
       at System.Threading.ExecutionContext.runTryCode(Object userData)
       at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
       at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
       at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
       at System.Net.ConnectStream.WriteHeaders(Boolean async)
       --- End of inner exception stack trace ---
       at System.Net.HttpWebRequest.GetResponse()
       at WindowsLive.Writer.CoreServices.HttpRequestHelper.SendRequest(String requestUri, HttpRequestFilter filter)
       at WindowsLive.Writer.CoreServices.XmlRpcClient.CallMethod(String methodName, XmlRpcValue[] parameters)
       at WindowsLive.Writer.BlogClient.Clients.XmlRpcBlogClient.CallMethod(String methodName, XmlRpcValue[] parameters)",""
    WindowsLiveWriter,1.4060,None,00028,11-Feb-2010 16:57:13.064,"== END WebException =======================",""
    WindowsLiveWriter,1.4060,Fail,00029,11-Feb-2010 16:57:13.074,"WindowsLive.Writer.Extensibility.BlogClient.BlogClientConnectionErrorException: Network Connection Error - Error attempting to connect to blog at:

    https://john-time.com/blogging/xmlrpc.php

    The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
       at WindowsLive.Writer.BlogClient.Clients.XmlRpcBlogClient.CallMethod(String methodName, XmlRpcValue[] parameters)
       at WindowsLive.Writer.BlogClient.Clients.BloggerCompatibleClient.GetUsersBlogs(String username, String password)
       at WindowsLive.Writer.BlogClient.Clients.BloggerCompatibleClient.GetUsersBlogs()
       at WindowsLive.Writer.BlogClient.Detection.BlogAccountDetector.ValidateService()","   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
       at System.Environment.get_StackTrace()
       at WindowsLive.Writer.CoreServices.Diagnostics.LogFileTraceListener.Fail(String message)
       at System.Diagnostics.TraceInternal.Fail(String message)
       at System.Diagnostics.Trace.Fail(String message)
       at WindowsLive.Writer.BlogClient.Detection.BlogAccountDetector.ReportError(Exception ex, MessageId errorMessageType, Object[] errorMessageParams)
       at WindowsLive.Writer.BlogClient.Detection.BlogAccountDetector.ValidateService()
       at WindowsLive.Writer.PostEditor.Configuration.Wizard.WeblogConfigurationWizardPanelSelectProvider.ValidatePanel()
       at WindowsLive.Writer.PostEditor.Configuration.Wizard.WeblogConfigurationWizardController.OnValidatePanel(Object panelControl)
       at WindowsLive.Writer.Controls.Wizard.WizardStep.Verify()
       at WindowsLive.Writer.Controls.Wizard.WizardController.next()
       at WindowsLive.Writer.Controls.Wizard.WizardForm.buttonNext_Click(Object sender, EventArgs e)
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.SendMessage(HandleRef hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at System.Windows.Forms.Control.SendMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.Control.ReflectMessageInternal(IntPtr hWnd, Message& m)
       at System.Windows.Forms.Control.WmCommand(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
       at System.Windows.Forms.Control.DefWndProc(Message& m)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.RunDialog(Form form)
       at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
       at WindowsLive.Writer.PostEditor.Configuration.Wizard.WeblogConfigurationWizardController.ShowDialog(IWin32Window owner, String title)
       at WindowsLive.Writer.PostEditor.Configuration.Wizard.WeblogConfigurationWizardController.EditWeblogTemporarySettings(IWin32Window owner)
       at WindowsLive.Writer.PostEditor.Configuration.Wizard.WeblogConfigurationWizardController.EditTemporarySettings(IWin32Window owner, TemporaryBlogSettings settings)
       at WindowsLive.Writer.PostEditor.Configuration.Settings.AccountPanel.buttonEditConfiguration_Click(Object sender, EventArgs e)
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.SendMessage(HandleRef hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at System.Windows.Forms.Control.SendMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.Control.ReflectMessageInternal(IntPtr hWnd, Message& m)
       at System.Windows.Forms.Control.WmCommand(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.GroupBox.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
       at System.Windows.Forms.Control.DefWndProc(Message& m)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.RunDialog(Form form)
       at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
       at WindowsLive.Writer.PostEditor.Configuration.Settings.WeblogSettingsManager.EditSettings(IWin32Window owner, TemporaryBlogSettings blogSettings, Boolean showAccountSettings)
       at WindowsLive.Writer.PostEditor.Configuration.Settings.WeblogSettingsManager.EditSettings(IWin32Window owner, String id, Boolean showAccountSettings)
       at WindowsLive.Writer.PostEditor.Configuration.Accounts.WeblogAccountManagementControl.EditSelectedWeblog()
       at WindowsLive.Writer.PostEditor.Configuration.Accounts.WeblogAccountManagementControl.buttonEdit_Click(Object sender, EventArgs e)
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.SendMessage(HandleRef hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at System.Windows.Forms.Control.SendMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.Control.ReflectMessageInternal(IntPtr hWnd, Message& m)
       at System.Windows.Forms.Control.WmCommand(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       at System.Windows.Forms.ContainerControl.WndProc(Message& m)
       at System.Windows.Forms.UserControl.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
       at System.Windows.Forms.Control.DefWndProc(Message& m)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.RunDialog(Form form)
       at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
       at WindowsLive.Writer.PostEditor.PreferencesHandler.ShowPreferences(IWin32Window owner, IBlogPostEditingSite editingSite, Type selectedPanelType)
       at WindowsLive.Writer.PostEditor.PostEditorPreferencesEditor.EditAccounts()
       at WindowsLive.Writer.PostEditor.PostEditorPreferencesEditor._commandAccounts_Execute(Object sender, EventArgs e)
       at WindowsLive.Writer.ApplicationFramework.Command.RaiseEvent(Object eventKey, EventArgs e)
       at WindowsLive.Writer.ApplicationFramework.Command.OnExecute(EventArgs e)
       at WindowsLive.Writer.ApplicationFramework.CommandOwnerDrawMenuItem.OnClick(EventArgs e)
       at System.Windows.Forms.MenuItem.MenuItemData.Execute()
       at System.Windows.Forms.Command.Invoke()
       at System.Windows.Forms.Command.DispatchID(Int32 id)
       at System.Windows.Forms.Control.WmCommand(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       at System.Windows.Forms.ContainerControl.WndProc(Message& m)
       at System.Windows.Forms.Form.WndProc(Message& m)
       at WindowsLive.Writer.ApplicationFramework.ApplicationForm.WndProc(Message& m)
       at WindowsLive.Writer.ApplicationFramework.SatelliteApplicationForm.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at WindowsLive.Writer.ApplicationFramework.SatelliteApplicationForm.Launcher.ThreadMain(Object[] parameters)
       at WindowsLive.Writer.CoreServices.Threading.ThreadStartWithParams.Run()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()"


    The version of Windows Live Writer I am using is:
    14.0.8089.726

    Version of WordPress I am currently running:
    2.8.6

    BTW: I ran a test with WireShark as well, and WLW is definitely sending my blog username and password in the clear so having this SSL option is important to me. In the meantime, I can still access WordPress using https and login/make blog postings securely just not with WLW.

    Thank you!

    J
    • Edited by jacdc Sunday, February 14, 2010 2:42 AM
    Friday, February 12, 2010 1:42 AM

All replies

  • I don't think SSL blogs are compatible with Windows Live Writer 2009, but I hope you get a definitive answer.
    Maybe in the next version... hopefully due out soon.

    -------------
    Later,
    LEHenryJr.
    Friday, February 12, 2010 2:41 PM
  • Try adding the following line to your wlwmanifest.xml file under <options>.

    <supportsHttps>Yes</supportsHttps>

    You'll end up with XML that looks like this:

    <?xml version="1.0" encoding="utf-8" ?> 
    <manifest xmlns="http://schemas.microsoft.com/wlw/manifest/weblog">
    <options>
      <clientType>WordPress</clientType> 
      <supportsKeywords>Yes</supportsKeywords> 
      <supportsGetTags>Yes</supportsGetTags> 
      <supportsHttps>Yes</supportsHttps>
    </options>
    ...
    

    You can find your wlwmanifest.xml file in Wordpress's "wp-includes" folder.

    If that doesn't work, email our team at wlw-team@microsoft.com and I'll give you another option to try.
    Windows Live Writer Developer
    Saturday, February 27, 2010 6:15 PM
  • Hello,
             Thank you for the reply - I tried adding the <supportsHttps> option to my wlwmanifest.xml - see a snippet of my wlwmanifest.xml below:
    <?xml version="1.0" encoding="utf-8" ?>

    <manifest xmlns="http://schemas.microsoft.com/wlw/manifest/weblog">

      <options>
        <clientType>WordPress</clientType>
     <supportsKeywords>Yes</supportsKeywords>
     <supportsGetTags>Yes</supportsGetTags>
     <supportsHttps>Yes</supportsHttps>
      </options>
     
      <weblog>
        <serviceName>WordPress</serviceName>
        <imageUrl>images/wlw/wp-icon.png</imageUrl>
        <watermarkImageUrl>images/wlw/wp-watermark.png</watermarkImageUrl>
        <homepageLinkText>View site</homepageLinkText>
        <adminLinkText>Dashboard</adminLinkText>
        <adminUrl>

    .
    .
    .


    However, after restarting my web server, I tried the SSL connection to my blog URL e.g. https://<domain-name>/<path to blog xmlrpc.php> and I am still getting a connection error in Windows Live Writer:

    "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel..."

    Please let me know if there is something else I can try. BTW, I purchased a signed SSL cert. from GoDaddy.com and installed this on my web server. I am able to connect to my blog using Windows Live Writer over SSL with this cert. installed just not with a self-signed certificate. I did not have to add the <supportsHttps> XML tag to the wlwmanifest.xml in order for this work.

    Thank you!

    JB

    Saturday, February 27, 2010 7:31 PM
  • Hello,

    I have a nearly identical issue.  A dedicated SSL certificate (through GoDaddy) works fine with WLW, but I get the same "Could not establish a trust relationship" error when using a shared SSL certificate (through iPage).

    I found that Zoundry Raven (http://www.zoundryraven.com) does not have this issue, but I'd much rather use WLW if possible.

    Any insight into this would be appreciated.

    Thanks!

    Eric
    Sunday, February 28, 2010 7:46 AM
  • You can use a command line argument to force Writer to use insecure SSL connections (that is, SSL connections deemed insecure by .NET). The command line argument is "/allowunsafecertificates".

    The best way to use this is to right-click on the shortcut you use for Writer, and choose Properties. In the dialog that pops up, click into the Target field and add /allowunsafecertificates to the end. The text should then look something like this:

    "C:\Program Files\Windows Live\Writer\WindowsLiveWriter.exe" /allowunsafecertificates

    That should do it for you.
    Windows Live Writer Developer
    • Proposed as answer by Will Duff Tuesday, March 2, 2010 3:41 AM
    Tuesday, March 2, 2010 3:40 AM
  • You can use a command line argument to force Writer to use insecure SSL connections (that is, SSL connections deemed insecure by .NET). The command line argument is "/allowunsafecertificates".

    The best way to use this is to right-click on the shortcut you use for Writer, and choose Properties. In the dialog that pops up, click into the Target field and add /allowunsafecertificates to the end. The text should then look something like this:

    "C:\Program Files\Windows Live\Writer\WindowsLiveWriter.exe" /allowunsafecertificates

    That should do it for you.
    Windows Live Writer Developer
    Will - thank you for this information. I hope this command line switch is documented somewhere? In any case, I tested using this switch with my unsigned certificates and Windows Live Writer is working. I did get 3 prompts to accept the unsigned certificates during the reconfig of my blog account in Windows Live Writer but after I accepted these warnings, WLW connected without issue. Thank you!

    BTW - Wish I had known about this option before going about purchasing a CA-signed certificate route but hopefully this will help others out there :)

    JB
    Tuesday, March 2, 2010 8:35 AM
  • I had the same issue. The way I got round this was to open the blog in internet explorer. You then get a warning message about an invalid certificate, select the option to continue to your website. Once there click on the security report icon next to the address bar, one of the options will be to import certificate, do all that accepting the defaults. Now whenever you go to the site through ie you don't get the initial warning page, and Live Writer will allow you to connect via https.
    Wednesday, February 9, 2011 10:47 AM