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:

  1. Ervoor zorgen dat ‘AllowOverride’ op all staat in het bestaande <VirtualHost _default_:443> blok
  2. 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.