Door een recente update van Apple werkt de PlexConnect truc niet meer vanwege het gebruik van het HTTPS protocol. Ik leg uit hoe je dit kunt oplossen.
Apple heeft recent een aantal kanalen toegevoegd en naar nu blijkt ook aangepast. Hierdoor bleek PlexConnect opeens niet meer te werken. Onder water gebruikt Apple voor bepaalde resources nu HTTPS in plaats van alleen HTTP voor het Apple Trailer kanaal. Zie ook dit iPhoneClub artikel voor meer informatie. Zie mijn eerdere blog hoe je PlexConnect initieel installeert.
Gelukkig zijn er een aantal slimme gebruikers van PlexConnect geweest die snel een nieuwe list hebben bedacht. Het idee is om een nieuw profiel toe te voegen aan je AppleTV met een eigen gemaakt certificaat. Alle stappen hiervoor staan precies uitgelegd op deze link.
Voor het geval deze link binnenkort verdwijnt herhaal ik deze instructies hieronder.
Creëer een certificaat
Installeer OpenSSL voor Windows en voer de volgende commando’s uit:
C:\OpenSSL-Win32\bin\openssl.exe req -new -nodes -newkey rsa:2048 -out C:\trailers.pem -keyout C:\trailers.key -x509 -days 7300 -subj "/C=US/CN=trailers.apple.com" -config C:\OpenSSL-Win32\bin\openssl.cfg
C:\OpenSSL-Win32\bin\openssl.exe x509 -in C:\trailers.pem -outform der -out C:\trailers.cer
type C:\trailers.key >> C:\trailers.pem
Je hebt nu 3 files die we later nodig hebben.
Creëer een profiel
Dubbel-klik de zojuist gecreëerde file C:\trailers.cer om zodoende dit certificaat te installeren op je computer.
Zorg ervoor dat je de iPhone Configuration Utility hebt geïnstalleerd. Open de applicatie en klik op ‘Configuration Profiles’. Vul een eigen naam in voor ‘Name’ en ‘Identifier’.
Scroll nu naar beneden en selecteer ‘Credentials’. Druk nu op de [+] knop en kies het certificaat dat we zojuist hebben geïnstalleerd. Uiteindelijk zal het scherm er dan zo uitzien:Installeer het profiel
Sluit nu je AppleTV aan op je computer. Let op dat je eerst de stroom op de AppleTV zet en dan pas de micro-USB kabel aansluit op je PC. Als je AppleTV wordt herkend moet je op /Configuration Profiles\ drukken en je zojuist gecreëerde profiel selecteren. Druk vervolgens op Install. Het process is klaar als er ‘Remove’ achter je profiel komt te staan.
Updaten en Configureren PlexConnect en Apache2
Je moet nu de allerlaatste code van PlexConnect ophalen. Dit kan eenvoudig door te navigeren naar je PlexConnect directory en het volgende commando uit te voeren:
git pull
Creëer vervolgens in de directory ‘PlexConnect\assets’ een nieuwe directory met de naam ‘certificates’. Copieer hierin de 3 files die we eerder hebben gemaakt.
Herstart nu je PlexConnect software. Je zult zien dat er 2 nieuwe regels zijn toegevoegd aan je ‘Settings.cfg’ file voor de SSL poort en het certificaat dat je moet gebruiken. Deze gaan we nu aanpassen. Aangezien ik op mijn huidige Linux Server de poort 443 al in gebruik heb ga ik een andere poort hiervoor gebruiken namelijk 4501. Voor de pointer naar het certificaat kun je het beste de volledige URL opgeven.
In de file ‘Settings.cfg’ zul je tenslotte de volgende 2 regels moeten hebben:
certfile = /home/henri/PlexConnect/assets/certificates/trailers.pem port_ssl = 4501
Nu moeten we nog Apache2 aanpassen dat HTTPS verkeer via een proxy naar 4501 wordt omgeleid. We passen eerst de file ‘/etc/apache2/ports.conf’ aan door ‘NameVirtualHost *:443’ toe te voegen:
<IfModule mod_ssl.c> # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to <VirtualHost *:443> # Server Name Indication for SSL named virtual hosts is currently not # supported by MSIE on Windows XP. NameVirtualHost *:443 Listen 443 </IfModule>
We creëren hierna een symbolic link naar de file ‘/etc/apache2/sites-availabe/default-ssl’ in de ‘/etc/apache2/sites-enabled/ directory’ met de volgende commando’s:
cd /etc/apache2/sites-enabled ln -s /etc/apache2/sites-available/default-ssl 000-default-ssl
Edit nu de file ‘/etc/apache2/sites-enabled/000-default-ssl’ voor de volgende acties:
- Ervoor zorgen dat ‘AllowOverride’ op all staat in het bestaande <VirtualHost _default_:443> blok
- Een nieuwe VirtualHost block toevoegen met een pointer naar je key-file en certificaat
Uiteindelijk ziet de file er dan in hoofdlijnen als volgt uit:
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin name@someurl.nl DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> < ... more settings ...> </VirtualHost> <VirtualHost _default_:443> ServerName trailers.apple.com ServerAlias atv.plexconnect SSLEngine On SSLProxyEngine On SSLCertificateFile /home/henri/PlexConnect/assets/certificates/trailers.cer SSLCertificateKeyFile /home/henri/PlexConnect/assets/certificates/trailers.key ProxyPreserveHost On ProxyPass / https://your.server.name.or.ip:4501/ ProxyPassReverse / https://your.server.name.or.ip:4501/ </VirtualHost>
Herstart nu je apache2 en PlexConnect software met de volgende commando’s:
/etc/init.d/apache2 restart /etc/init.d/plexconnect restart
Nu zal als het goed is PlexConnect weer als vanouds werken.
Hoi,
ik heb de volgende vraag.
Ik heb plexconnect werkend en nu wil ik een andere site met ssl draaien.
Ik krijg echter een melding:
Error code 403.
Message: Not Serving Client 192.168.178.29
Error code explanation: 403 = Request forbidden — authorization will not help.
Blijkbaar heb is het je wel gelukt om plexconnect te draaien naast een andere site met ssl
Kan jij me verder helpen?
dank je
rudy
Ik heb PlexConnect om die reden op andere poorten laten luisteren, respectievelijk 4500 en 4501. Via ProxyPass van Apache kun je omleiden (zie het bericht).
dank je voor je snelle antwoord.
ik heb dit ook geprobeerd. Echter als in in Settings.cfg de ssl port wijzig in 4501 ipv 443 krijg ik op de atv geen connectie met plex. Als ik de ssl port in setting van plexconnect op 443 laat staan werkt het wel.
Echter dan is mijn port 443 bezet door plex en da t ik natuurlijk niet.
Rudy
Heb je ook je Apache instellingen aangepast zoals ik heb beschreven in de blog? Heb je verder ook mijn eerdere blog gelezen (http://eye-vision.homeip.net/1408/plexconnect-en-appletv-met-debian/)?
volgens mij wel
enige verschil is:
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.s
deze wordt op ubuntu op een andere wijze geladen
rudy
Heb je ook de juiste aanpassing gemaakt in 000-default-ssl?
ProxyPreserveHost On
ProxyPass / https://your.server.name.or.ip:4501/
ProxyPassReverse / https://your.server.name.or.ip:4501/
yep:
ServerName trailers.apple.com
ServerAlias atv.plexconnect
ProxyRequests Off
SSLEngine On
SSLProtocol all -SSLv2
SSLProxyEngine On
SSLCertificateFile /usr/local/lib/PlexConnect/assets/certificates/trailers.der
SSLCertificateKeyFile /usr/local/lib/PlexConnect/assets/certificates/trailers.key
ProxyPreserveHost On
Order allow,deny
Allow from all
ProxyPass / https://192.168.178.103:4501/
ProxyPassReverse / https://192.168.178.103:4501/
Alles doet het wel alleen op port 443 en niet op 4501/
rudy
sorry er is wat fout gegaan bij copy past:
ServerName trailers.apple.com
ServerAlias atv.plexconnect
ProxyRequests Off
SSLEngine On
SSLProtocol all -SSLv2
SSLProxyEngine On
SSLCertificateFile /usr/local/lib/PlexConnect/assets/certificates/trailers.der
SSLCertificateKeyFile /usr/local/lib/PlexConnect/assets/certificates/trailers.key
ProxyPreserveHost On
Order allow,deny
Allow from all
ProxyPass / https://192.168.178.103:4501/
ProxyPassReverse / https://192.168.178.103:4501/
Rudy
hoi Henri,
ik ben eruit, stom ik had de ssl mod en vhost mod niet geladen 🙁
maar in ieder geval dankje voor je replies
Rudy