Masalah lain yang saya temui setelah nyadar kalo tempat saya naro file RSS blog gak bisa diakses adalah ternyata si jadul PlanetPlanet kombinasi dg Python 2.7 punya masalah saat nyedot data dari situs https ini. Entah apakah ini kasus spesifik atau ngga, saya kurang tau 😛
Saat saya menjalankan si PlanetPlanet, tiba2 dia ngeluarin exception di bawah ini.
Traceback (most recent call last):
File "/anu/itu/planet/feedparser.py", line 1893, in _open_resource
return opener.open(request)
File "/usr/lib/python2.7/urllib2.py", line 400, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 418, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1215, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1174, in do_open
h.request(req.get_method(), req.get_selector(), req.data, headers)
File "/usr/lib/python2.7/httplib.py", line 958, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.7/httplib.py", line 992, in _send_request
self.endheaders(body)
File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 776, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 1161, in connect
self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket
ciphers=ciphers)
File "/usr/lib/python2.7/ssl.py", line 141, in __init__
ciphers)
TypeError: must be _socket.socket, not _socketobject
Nanya2 oom google ngga membawa hasil yang menggembirakan. Berhubung saya lagi males ngecek2 lebih jauh, jadi saya putuskan tuk bikin situs blog ini tersedia dalam modus http juga walau cuma bisa diakses dari localhost 😛 ehh ternyata sepertinya si wordpress kekeuh sekali https, tetap https (duh). Berhubung yg ini gagal, saya coba cara lain dg bikin reverse proxy aja 😀 proxy yang membungkus situs https tuk disediakan dalam http.
Kira2 begini konfigurasinya
<VirtualHost 127.0.0.1:12345>
...
SSLProxyEngine On
ProxyPass / https://fajran.web.id/
ProxyPassReverse / https://fajran.web.id/
...
</VirtualHost>
Nyalakan modul mod_proxy
dan mod_ssl
dan restart/reload si apache.
Konfigurasi di atas mirip dg cara membuat reverse proxy biasa, namun ada bagian penting yang ngga boleh kelupaan ditulis: SSLProxyEngine On
. Tanpa ini, proxy dari http ke https ngga bisa jalan.