Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Convert Let's Encrypt PEM Files to a PFXDemonstrates how to convert the .pem files provided by Let's Encrypt to a single PFX.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example assumes the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. -- Let's Encrypt provides four .pem files -- 1. fullchain.pem -- 2. privkey.pem -- 3. cert.pem -- 4. chain.pem -- The cert.pem and chain.pem are redundant. -- The fullchain.pem is composed of the cert.pem and chain.pem. -- To convert the PEM's to a single .pfx, we don't need the redundant data. -- The privkey.pem and fullchain.pem provide the required data. -- We can ignore cert.pem and chain.pem (because those certs are already found in fullchain.pem). -- We need a single .pem file that contains both the private key, the cert, -- and the certs in the chain of authentication. -- Let's combine priveky.pem and fullchain.pem into a single .pem DECLARE @sbPem int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbPem OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @success int EXEC sp_OAMethod @sbPem, 'LoadFile', @success OUT, 'qa_data/pem/lets_encrypt/privkey.pem', 'utf-8' IF @success = 0 BEGIN PRINT 'Failed to load privkey.pem' EXEC @hr = sp_OADestroy @sbPem RETURN END -- To be safe, append a blank line.. EXEC sp_OAMethod @sbPem, 'AppendLine', @success OUT, '', 0 DECLARE @sbFullChainPem int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbFullChainPem OUT EXEC sp_OAMethod @sbFullChainPem, 'LoadFile', @success OUT, 'qa_data/pem/lets_encrypt/fullchain.pem', 'utf-8' IF @success = 0 BEGIN PRINT 'Failed to load fullchain.pem' EXEC @hr = sp_OADestroy @sbPem EXEC @hr = sp_OADestroy @sbFullChainPem RETURN END -- Append the full cert chain PEM to the private key PEM. EXEC sp_OAMethod @sbPem, 'AppendSb', @success OUT, @sbFullChainPem -- Load the combined PEM into a Chilkat PFX object. DECLARE @pfx int -- Use "Chilkat_9_5_0.Pfx" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Pfx', @pfx OUT EXEC sp_OAMethod @sbPem, 'GetAsString', @sTmp0 OUT EXEC sp_OAMethod @pfx, 'LoadPem', @success OUT, @sTmp0, 'no password required' IF @success = 0 BEGIN EXEC sp_OAGetProperty @pfx, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @sbPem EXEC @hr = sp_OADestroy @sbFullChainPem EXEC @hr = sp_OADestroy @pfx RETURN END -- Write the PFX w/ a password. DECLARE @pfxPassword nvarchar(4000) SELECT @pfxPassword = 'secret' EXEC sp_OAMethod @pfx, 'ToFile', @success OUT, @pfxPassword, 'qa_output/sample.pfx' IF @success = 0 BEGIN EXEC sp_OAGetProperty @pfx, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @sbPem EXEC @hr = sp_OADestroy @sbFullChainPem EXEC @hr = sp_OADestroy @pfx RETURN END PRINT 'Success!' EXEC @hr = sp_OADestroy @sbPem EXEC @hr = sp_OADestroy @sbFullChainPem EXEC @hr = sp_OADestroy @pfx END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.