title: Delphi Indy - How to get SSL certificates for a SSL-TCP Client/Server link with Indy 10
body: <p>I'm completely new to SSL and these ciphering stuff but I need to make communicate client and server Delphi XE6 apps running on mobile devices. The TCP communication has to be safely ciphered.</p>
  
  <p>To start, I simply wrote the Delphi/Indy TIdTCPServer/TIdTCPClient based Win32 client and server exchanging strings. (Issued from the indy10clieservr demos found on SourceForge: svn://svn.code.sf.net/p/indy10clieservr/code/1_sample Simple String Exchange)</p>
  
  <p>I tried to modify them to cipher the communication by adding a TIdServerIOHandlerSSLOpenSSL component on the Server, and a TIdSSLIOHandlerSocketOpenSSL on the Client, attaching them respectively to the TIdTCPServer and TIdTCPClient.</p>
  
  <p>I set their following properties on both sides:
  - SSLOptions.Method = sslvSSSv23
  - SSLOptions.Mode = sslmServer / sslmClient (respectively)
  - SSLOptions.VerifyDepth = 2</p>
  
  <p>And I added an OnGetPassword Event handler setting the Password parameter to 'password' on both sides too.
  (What is the role of this password ? Is it critical for the privacy of the communication ? What if it is found by analysing/reverse enginering the binary file ?)</p>
  
  <p>Finaly, in the server's OnConnect event handler I set the TIdSSLIOHandlerSocketBase(AContext.Connection.IOHandler).PassThrough property to false.</p>
  
  <p>But what about the 3 SSLOptions certificate properties ??
  - CertFile
  - KeyFile
  - RootCertFile</p>
  
  <p>How to generate and deploy them on my target devices to make run my SSL layer on the client and server ?</p>
  
  <p>Moreover, is there something special to do or to take into acount if I intend to deploy later my server and/or clients on IOS or Android mobile device.</p>
  
  <p>I'm aware that I have few knowledge on this SSL topic. Sorry if I ask something trivial. Any basic documentation explaining all of this tricky stuff to a newbie would be greatly appreciated.</p>