'Object Reference Not Set' Problem using CertifyTheWeb with TransIP (DNS)

I’m attempting to set up a certificate with validation via DNS, using TransIP as the DNS provider (Certify Certificate Manager 6.1.0.0). When clicking the ‘Test’ button, I get an error message “TransIP DNS API :: Object reference not set to an instance of an object.”, with no further context.

The log file contains:

2024-08-09 11:39:27.106 +02:00 [INF] ---- Beginning Request [windows-test.diasoft.nl] ----
2024-08-09 11:39:27.106 +02:00 [INF] Renewal Reason: Renewal attempt is due, item has failed 5 times and renewal will be periodically attempted.
2024-08-09 11:39:27.133 +02:00 [INF] Certify/6.1.0.0 (Windows; Microsoft Windows NT 10.0.20348.0) 
2024-08-09 11:39:27.841 +02:00 [INF] Beginning certificate request process: windows-test.diasoft.nl using ACME provider Anvil
2024-08-09 11:39:27.842 +02:00 [INF] The selected Certificate Authority is: Let's Encrypt
2024-08-09 11:39:27.842 +02:00 [INF] Requested identifiers to include on certificate: windows-test.diasoft.nl [dns]
2024-08-09 11:39:29.477 +02:00 [DBG] Creating/retrieving order. Attempts remaining:3
2024-08-09 11:39:30.662 +02:00 [INF] Created ACME Order: https://acme-v02.api.letsencrypt.org/acme/order/1880294796/294484894146
2024-08-09 11:39:31.822 +02:00 [DBG] Fetching Authz Challenges: https://acme-v02.api.letsencrypt.org/acme/authz-v3/387627826986
2024-08-09 11:39:32.987 +02:00 [INF] Got http-01 challenge https://acme-v02.api.letsencrypt.org/acme/chall-v3/387627826986/zETUdQ
2024-08-09 11:39:33.313 +02:00 [INF] Got dns-01 challenge https://acme-v02.api.letsencrypt.org/acme/chall-v3/387627826986/9c5Z6g
2024-08-09 11:39:34.148 +02:00 [INF] Preparing automated challenge responses for: windows-test.diasoft.nl [dns]
2024-08-09 11:39:34.156 +02:00 [INF] DNS: Creating TXT Record '_acme-challenge.windows-test.diasoft.nl' with value '_Vdc3Kry2W9u1xBY8zssCZOgo1gZxdl4liS1VZT-OR4', [windows-test.diasoft.nl]  using API provider 'TransIP DNS API'
2024-08-09 11:39:34.156 +02:00 [ERR] DNS update failed: TransIP DNS API :: Object reference not set to an instance of an object.
2024-08-09 11:39:34.157 +02:00 [ERR] TransIP DNS API :: Object reference not set to an instance of an object.

If I run “certify renew id=windows-test.diasoft.nl” from the command line I get the following output:

Unhandled Exception: Certify.Client.ServiceCommsException: Internal Service Error: managedcertificates/autorenew: An internal error has occurred. If this problem happens regularly please report it to [email protected]: Object reference not set to an instance of an object. Certify.Core    at Certify.Management.RenewalManager.<>c__DisplayClass2_0.<PerformRenewAll>b__0(ManagedCertificate s) in D:\a\certify-internal\certify-internal\src\certify-build\certify\src\Certify.Core\Management\RenewalManager.cs:line 65
   at System.Linq.Enumerable.WhereListIterator`1.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext()
   at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source, Func`2 predicate)
   at Certify.Management.RenewalManager.<PerformRenewAll>d__2.MoveNext() in D:\a\certify-internal\certify-internal\src\certify-build\certify\src\Certify.Core\Management\RenewalManager.cs:line 98
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Certify.Management.CertifyManager.<PerformRenewAll>d__30.MoveNext() in D:\a\certify-internal\certify-internal\src\certify-build\certify\src\Certify.Core\Management\CertifyManager\CertifyManager.CertificateRequest.cs:line 83
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Certify.Service.Controllers.ManagedCertificatesController.<BeginAutoRenewal>d__13.MoveNext() in D:\a\certify-internal\certify-internal\src\certify-build\certify\src\Certify.Service\Controllers\ManagedCertificateController.cs:line 165
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()
   at Certify.Client.CertifyApiClient.<PostAsync>d__23.MoveNext() in D:\a\certify-internal\certify-internal\src\certify-build\certify\src\Certify.Client\CertifyApiClient.cs:line 193
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Certify.Client.CertifyApiClient.<BeginAutoRenewal>d__48.MoveNext() in D:\a\certify-internal\certify-internal\src\certify-build\certify\src\Certify.Client\CertifyApiClient.cs:line 415
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Certify.CLI.CertifyCLI.<PerformAutoRenew>d__35.MoveNext() in D:\a\certify-internal\certify-internal\src\certify-build\certify\src\Certify.CLI\CertifyCLI.ManagedCertificates.cs:line 88
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Certify.CLI.Program.<Main>d__1.MoveNext() in D:\a\certify-internal\certify-internal\src\certify-build\certify\src\Certify.CLI\Program.cs:line 63
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Certify.CLI.Program.<Main>(String[] args)

Any ideas as to what I should look at further?

Hi @pviney has the TransIP API previously worked for you before? I’m trying determine if this is a new issue in this release or if it never worked.

I’ve never used CertifyTheWeb before - we are evaluating it, so I don’t know if this issue is new or not. I was unable to find much information anywhere about using the TransIP plugin and its status.

Thanks, yes it was a community contributed plugin that was added about 4 years ago but we don’t have TransIP credentials to test with. The first thing I’d check is that your TransIP username and key credential have been set correctly.

We’ll look into this to see if there is anything obvious stopping it from working but it’s possible TransIP have changed their API at some point.

Looking at this further your private key is most likely not in the expected format. It’s expected to be PEM (text) format. The error you’re seeing is when the app attempts to compose an error message about the PEM key being the wrong type, but it’s actually null (not a PEM format key).

I’ve retried once more, and this time everything seems to work. I guess I got something wrong last time, but I’m not sure what. Thanks for the feedback and sorry for wasting your time.

1 Like