Ok SSL with RTMPS works, but Screen Share is broken. They are working on it , 3.1.2 is waiting for a resoution. Thanks to Maxim for helping resolve the proxyType issue. That was the one thing all docs missed the other was ports. I don’t think one document had a working config example for Openmeetings 3.1.1. Even the doc on RTMPS at the official website doesn’t work. This works! So enjoy stress free install using SSL.
To get SSL working with RTMPS you need to do the following: If you want to use LetsEncrypt Free SSL do this use the following or skip and add your own valid cert from any location to the keystone. I add the LetsEncrypt because I couldn’t find a single source that had this correct either. It took a bit to resolve. Install LetsEncrypt plenty of places to show you how to install. Then do cert-only install. You need to convert the cert to work with keystone. cd /etc/letsencrypt/live/yourdomain # Java cacerts you can add the x3-cross-sign.pem to it like this. You have to download the x3-cross-sign.pem from letsencrypt website. the default Java password is: changeit keytool -importcert -file /etc/letsencrypt/live/yourdomain/x3-cross-sign.pem -keystore cacerts # Make new keystore #keytool -keysize 2048 -genkey -alias key -keyalg RSA -keystore keystore.jks # Make sure you append the x3-cross-sign.pem to the chain.pem or it will not work. openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out cert_and_key.p12 -name red5 -CAfile chain.pem -caname root # Import keys keytool -importkeystore -deststorepass password -destkeypass password -destkeystore keystore.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -srcstorepass d4h3j9nq1 -alias red5 cp keystore.jks /opt/yourinstall/conf/keystore.jks cp keystore.jks /opt/yourinstall/conf/keystore.screen cp keystore.jks /opt/yourinstall/conf/truststore.jks vi conf/red5.properties https.port=443 rtmps.port=443 rtmps.keystorepass=yourpass rtmps.keystorefile=conf/keystore.jks rtmps.truststorepass=yourpass rtmps.truststorefile=conf/truststore.jks Make sure you set proxyType to none or it will not work. vi webapps/openmeetings/public/config.xml <rtmpport>1935</rtmpport> <rtmpsslport>443</rtmpsslport> <useSSL>yes</useSSL> <protocol>https</protocol> # NOTE: don’t use best like other docs say. It doesn’t work!! <proxyType>none</proxyType> Now enable SSL in the jee-container.xml. I copy the file appending .ssl and .html to allow quick changes. vi conf/jee-container.xml <!-- Tomcat without SSL enabled <bean id="tomcat.server" class="org.red5.server.tomcat.TomcatLoader" depends-on="context.loader" init-method="start" lazy-init="true"> <property name="webappFolder" value="${red5.root}/webapps" /> <property name="connectors"> <list> <bean name="httpConnector" class="org.red5.server.tomcat.TomcatConnector"> <property name="protocol" value="org.apache.coyote.http11.Http11NioProtocol" /> <property name="address" value="${http.host}:${http.port}" /> <property name="redirectPort" value="${https.port}" /> </bean> </list> </property> <property name="baseHost"> <bean class="org.apache.catalina.core.StandardHost"> <property name="name" value="${http.host}" /> </bean> </property> <property name="valves"> <list> <bean id="valve.access" class="org.apache.catalina.valves.AccessLogValve"> <property name="directory" value="log" /> <property name="prefix" value="${http.host}_access." /> <property name="suffix" value=".log" /> <property name="pattern" value="common" /> <property name="rotatable" value="true" /> </bean> </list> </property> </bean> --> <!-- Tomcat with SSL enabled --> <bean id="tomcat.server" class="org.red5.server.tomcat.TomcatLoader" depends-on="context.loader" init-method="start" lazy-init="true"> <property name="webappFolder" value="${red5.root}/webapps" /> <property name="connectors"> <list> <bean name="httpConnector" class="org.red5.server.tomcat.TomcatConnector"> <property name="protocol" value="org.apache.coyote.http11.Http11NioProtocol" /> <property name="address" value="${http.host}:${http.port}" /> <property name="redirectPort" value="${https.port}" /> </bean> <bean name="httpsConnector" class="org.red5.server.tomcat.TomcatConnector"> <property name="secure" value="true" /> <property name="protocol" value="org.apache.coyote.http11.Http11NioProtocol" /> <property name="address" value="${http.host}:${https.port}" /> <property name="redirectPort" value="${http.port}" /> <property name="connectionProperties"> <map> <entry key="port" value="${https.port}" /> <entry key="redirectPort" value="${http.port}" /> <entry key="SSLEnabled" value="true" /> <entry key="sslProtocol" value="TLS" /> <entry key="keystoreFile" value="${rtmps.keystorefile}" /> <entry key="keystorePass" value="${rtmps.keystorepass}" /> <entry key="keystoreType" value="JKS" /> <entry key="truststoreFile" value="${rtmps.truststorefile}" /> <entry key="truststorePass" value="${rtmps.truststorepass}" /> <entry key="clientAuth" value="false" /> <entry key="allowUnsafeLegacyRenegotiation" value="true" /> <entry key="maxKeepAliveRequests" value="${http.max_keep_alive_requests}"/> <entry key="useExecutor" value="true"/> <entry key="maxThreads" value="${http.max_threads}"/> <entry key="acceptorThreadCount" value="${http.acceptor_thread_count}"/> <entry key="processorCache" value="${http.processor_cache}"/> </map> </property> </bean> </list> </property> <property name="baseHost"> <bean class="org.apache.catalina.core.StandardHost"> <property name="name" value="${http.host}" /> </bean> </property> </bean> You can now start up red5 from init if you followed the install instructions. You should be able to connect to https://yourdomain.com. If it complains the cert is not valid then you missed something in the keystone process. This is the script I use to build my keystone from a cron job just before it expires automatically so it should work. Good luck, Jason