I think that @Peter did not enable SSL for the services via the i-MSCP installer (setup dialog), or he did something bad after the i-MSCP installation (like trying to activate SSL manually).
ProFTPD, when configured by i-MSCP, doesn't use (doesn't include) the /etc/proftpd/tls.conf. The SSL configuration snippet is injected by the i-MSCP installer in the /etc/proftpd/proftpd.conf file at runtime, when you enable SSL for the services through the i-MSCP setup dialog.
See https://github.com/i-MSCP/imsc…proftpd/installer.pm#L470
Resulting /etc/proftpd/proftpd.conf file:
Code
- root@jessie-lvm:/etc/proftpd# cat proftpd.conf
- # Includes DSO modules (this is mandatory in proftpd 1.3)
- Include /etc/proftpd/modules.conf
- ServerName "jessie-lvm.bbox.nuxwin.com"
- ServerType standalone
- ServerIdent on "i-MSCP FTP server"
- DeferWelcome off
- UseIPv6 on
- MultilineRFC2228 on
- DefaultServer on
- ShowSymlinks on
- AllowOverwrite on
- UseReverseDNS off
- IdentLookups off
- AllowStoreRestart on
- AllowForeignAddress on
- LogFormat traff "%b %u"
- TimeoutLogin 120
- TimeoutNoTransfer 600
- TimeoutStalled 600
- TimeoutIdle 1200
- DisplayLogin welcome.msg
- DisplayChdir message
- ListOptions "-a" "strict"
- DenyFilter \*.*/
- DefaultRoot ~
- # Uncomment this if you are using NIS or LDAP to retrieve passwords:
- # PersistentPasswd off
- # Port 21 is the standard FTP port.
- Port 21
- # In some cases you have to specify passive ports range to by-pass
- # firewall limitations. Ephemeral ports can be used for that, but
- # feel free to use a more narrow range.
- PassivePorts 32768 60999
- # To prevent DoS attacks, set the maximum number of child processes
- # to 30. If you need to allow more than 30 concurrent connections
- # at once, simply increase this value. Note that this ONLY works
- # in standalone mode, in inetd mode you should use an inetd server
- # that allows you to limit maximum number of processes per service
- # (such as xinetd)
- MaxInstances 100
- # Maximum number of clients allowed to connect per host.
- MaxClientsPerHost none
- # Set the user and group that the server normally runs at.
- User nobody
- Group nogroup
- # Normally, we want files to be overwriteable.
- <Directory /*>
- # Umask 022 is a good standard umask to prevent new files and dirs
- # (second parm) from being group and world writable.
- Umask 027 027
- # Normally, we want files to be overwriteable.
- AllowOverwrite on
- HideNoAccess on
- </Directory>
- <Limit ALL>
- IgnoreHidden on
- </Limit>
- # Be warned: use of this directive impacts CPU average load!
- #
- # Uncomment this if you like to see progress and transfer rate with ftpwho
- # in downloads. That is not needed for uploads rates.
- # UseSendFile off
- <Global>
- RootLogin off
- TransferLog /var/log/proftpd/xferlog
- PathDenyFilter "\.quota$"
- </Global>
- # Loading required modules
- <IfModule !mod_sql.c>
- LoadModule mod_sql.c
- AuthOrder mod_sql.c
- </IfModule>
- <IfModule !mod_sql_mysql.c>
- LoadModule mod_sql_mysql.c
- </IfModule>
- <IfModule !mod_quotatab.c>
- LoadModule mod_quotatab.c
- </IfModule>
- <IfModule !mod_quotatab_sql.c>
- LoadModule mod_quotatab_sql.c
- </IfModule>
- <IfModule !mod_tls.c>
- LoadModule mod_tls.c
- </IfModule>
- # i-MSCP Quota management
- <IfModule mod_quotatab.c>
- QuotaEngine on
- QuotaShowQuotas on
- QuotaDisplayUnits Mb
- SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
- SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
- SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies
- SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies
- QuotaLock /var/run/proftpd/tally.lock
- QuotaLimitTable sql:/get-quota-limit
- QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
- </IfModule>
- <IfModule mod_ratio.c>
- # Ratios on
- </IfModule>
- # Delay engine reduces impact of the so-called Timing Attack described in
- # http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
- # It is on by default.
- <IfModule mod_delay.c>
- DelayEngine on
- </IfModule>
- <IfModule mod_ctrls.c>
- ControlsEngine on
- ControlsMaxClients 2
- ControlsLog /var/log/proftpd/controls.log
- ControlsInterval 5
- ControlsSocket /var/run/proftpd/proftpd.sock
- </IfModule>
- <IfModule mod_ctrls_admin.c>
- AdminControlsEngine on
- </IfModule>
- # i-MSCP SQL Managment
- <IfModule mod_sql.c>
- SQLBackend mysql
- SQLAuthTypes Crypt
- SQLAuthenticate on
- SQLConnectInfo imscp@localhost "vftp_user" "<password>"
- SQLUserInfo ftp_users userid passwd uid gid homedir shell
- SQLGroupInfo ftp_group groupname gid members
- SQLMinUserUID 1001
- SQLMinUserGID 1001
- SQLUserWhereClause "status = 'ok'"
- SQLNegativeCache on
- </IfModule>
- # ProFTPD behind NAT - Use public IP address
- MasqueradeAddress <ip>
- # SSL configuration
- <IfModule mod_tls.c>
- TLSEngine on
- TLSRequired off
- TLSLog /var/log/proftpd/ftp_ssl.log
- TLSProtocol TLSv1
- TLSOptions NoCertRequest NoSessionReuseRequired
- TLSRSACertificateFile /etc/imscp/imscp_services.pem
- TLSRSACertificateKeyFile /etc/imscp/imscp_services.pem
- TLSVerifyClient off
- </IfModule>
- root@jessie-lvm:/etc/proftpd#