Problems validating iTunes Podcast
Friday, December 23rd, 2016 | Tech
Recently I launched the Worfolk Anxiety Podcast and as part of that, submitted it to the Apple iTunes Store for listing. The problem was that every time I tried I would get an error:
Unable to read your feed
After searching the web I found a lot of reports that Apple only had limited support for SSL: there were only eight trusted providers and you could not use anyone else. For example, any certificates issued by Let’s Encrypt would not work.
However, this did not make any sense because I had a GeoTrust RapidSSL certificate, and GeoTrust was supported.
I emailed Apple support and we began a backwards and forwards discussion about it. They suggested that although my feed validated on most validators, there were a few that it did not and I should address these issues. The issue was that you cannot use SSL in the strict RSS standard because URLs must begin with http and not https.
I fixed this, and still nothing.
I even tried purchasing an SSL certificate from Comodo in case Apple had a problem with the RapidSSL intermediately between my certificate and the GeoTrust root certificate. That did not help either, so I now have a duplicate certificate that is of absolutely no use.
Finally, Apple sent me the command they were running.
curl --head https://www.worfolkanxiety.com/podcast/feed
Suddenly it all made sense! They were making a HEAD request, rather than a GET request. I am using the Rauma PHP framework (that I also wrote) and you have to specify which verbs you would like to support. That end-point is tagged as a GET end-point, so did not respond to a HEAD request.
Once I added support for HEAD requests, it all started working. I even changed the MP3 files and artwork back to HTTPS and it still worked.
I have since rolled out an update to the Rauma framework so that it automatically adds support for HEAD requests when you add a GET request. However, there are many other frameworks where you specify the verbs you want to support, so if you run into a similar issue, check to see if that is the cause of your problem.
Recently I launched the Worfolk Anxiety Podcast and as part of that, submitted it to the Apple iTunes Store for listing. The problem was that every time I tried I would get an error:
Unable to read your feed
After searching the web I found a lot of reports that Apple only had limited support for SSL: there were only eight trusted providers and you could not use anyone else. For example, any certificates issued by Let’s Encrypt would not work.
However, this did not make any sense because I had a GeoTrust RapidSSL certificate, and GeoTrust was supported.
I emailed Apple support and we began a backwards and forwards discussion about it. They suggested that although my feed validated on most validators, there were a few that it did not and I should address these issues. The issue was that you cannot use SSL in the strict RSS standard because URLs must begin with http and not https.
I fixed this, and still nothing.
I even tried purchasing an SSL certificate from Comodo in case Apple had a problem with the RapidSSL intermediately between my certificate and the GeoTrust root certificate. That did not help either, so I now have a duplicate certificate that is of absolutely no use.
Finally, Apple sent me the command they were running.
curl --head https://www.worfolkanxiety.com/podcast/feed
Suddenly it all made sense! They were making a HEAD request, rather than a GET request. I am using the Rauma PHP framework (that I also wrote) and you have to specify which verbs you would like to support. That end-point is tagged as a GET end-point, so did not respond to a HEAD request.
Once I added support for HEAD requests, it all started working. I even changed the MP3 files and artwork back to HTTPS and it still worked.
I have since rolled out an update to the Rauma framework so that it automatically adds support for HEAD requests when you add a GET request. However, there are many other frameworks where you specify the verbs you want to support, so if you run into a similar issue, check to see if that is the cause of your problem.