Upgraded from TrueNAS 25.04.2.6 to 25.10.1, the Certificates section becomes malfunction.
In 25.04.2.6:
In 25.10.1:
Import certificate using Web UI works but Older certificates cannot be deleted.
Updating with deploy_truenas.py from GitHub - danb35/deploy-freenas: Python script to automate deploying TLS certificates to TrueNAS servers resulted in the following error:
python /mnt/tank/tls/deploy-freenas/deploy_truenas.py
2025-12-21 02:04:48,581 - root - INFO - ✅ Certificate and private key match.
2025-12-21 02:04:48,593 - websocket - INFO - Websocket connected
2025-12-21 02:05:03,225 - root - INFO - Certificate ng_home-2025-12-21-020448 imported.
2025-12-21 02:05:40,853 - root - INFO - UI certificate updated to ng_home-2025-12-21-020448
2025-12-21 02:05:40,853 - root - INFO - Not setting FTP cert because ftp_enabled is false.
2025-12-21 02:05:40,854 - root - INFO - Not setting app certificates because apps_enabled is false.
Traceback (most recent call last):
File "/mnt/tank/tls/deploy-freenas/deploy_truenas.py", line 268, in <module>
certs = c.call("certificate.query")
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/truenas_api_client/__init__.py", line 810, in call
return self.wait(c, callback=callback, job=job, timeout=timeout,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/truenas_api_client/__init__.py", line 857, in wait
raise c.error
truenas_api_client.exc.ClientException: 7 validation errors for CertificateQueryResult
result.list[CertificateQueryResultItem].0.DN
String should have at most 1024 characters [type=string_too_long, input_value="/C=GB/ST=Greater London/... IP Address:10.27.0.254", input_type=str]
For further information visit https://errors.pydantic.dev/2.9/v/string_too_long
result.list[CertificateQueryResultItem].1.DN
String should have at most 1024 characters [type=string_too_long, input_value="/C=GB/ST=Greater London/... IP Address:10.27.0.254", input_type=str]
For further information visit https://errors.pydantic.dev/2.9/v/string_too_long
result.list[CertificateQueryResultItem].2.DN
String should have at most 1024 characters [type=string_too_long, input_value="/C=GB/ST=Greater London/... IP Address:10.27.0.254", input_type=str]
For further information visit https://errors.pydantic.dev/2.9/v/string_too_long
result.list[CertificateQueryResultItem].3.DN
String should have at most 1024 characters [type=string_too_long, input_value="/C=GB/ST=Greater London/... IP Address:10.27.0.254", input_type=str]
For further information visit https://errors.pydantic.dev/2.9/v/string_too_long
result.list[CertificateQueryResultItem].4.DN
String should have at most 1024 characters [type=string_too_long, input_value="/C=GB/ST=Greater London/... IP Address:10.27.0.254", input_type=str]
For further information visit https://errors.pydantic.dev/2.9/v/string_too_long
result.CertificateQueryResultItem
Input should be a valid dictionary or instance of CertificateQueryResultItem [type=model_type, input_value=[{'id': 32, 'type': 8, 'n... False, 'parsed': True}], input_type=list]
For further information visit https://errors.pydantic.dev/2.9/v/model_type
result.int
Input should be a valid integer [type=int_type, input_value=[{'id': 32, 'type': 8, 'n... False, 'parsed': True}], input_type=list]
For further information visit https://errors.pydantic.dev/2.9/v/int_type
*** Yes, I know. I have put all the IPs of the subnet ‘10.27.0.0’/24’ into the subjectAltName of the cert. I guess it is the reason it fails.


