J'essaye de configurer apache2 pour que je puisse essayer ssl en développement sur mon rail 3 app sur ubuntu.J'ai du mal à configurer Apache pour SSL avec mongrel et rails 3 en développement sur ubuntu
Les travaux d'application des rails, sauf pour https où dans FireFox i obtenir:
The connection was interrupted
The connection to localhost:3000 was interrupted while the page was loading.
Dans la console que je reçois:
Thu Oct 14 15:56:28 +1100 2010: HTTP parse error, malformed request (127.0.0.1):
#<Mongrel::HttpParserError: Invalid HTTP format, parsing fails.>
Thu Oct 14 15:56:28 +1100 2010: REQUEST DATA: "\200U\001\003\000\000<\000\000\000\020\000\000\210\000\000\207\000\0008\000\000\204\000\0005\000\0009\000\000E\000\000D\000\0003\000\0002\000\000\226\000\000A\000\000\004\000\000\005\000\000/\000\000\026\000\000\023\000\376\377\000\000\n\000\000\377[������-V\214�e\277P-"
---
PARAMS: {}
---
Je reçois l'erreur de la console ci-dessus si Apache est en cours d'exécution ou pas lors de l'utilisation de https. Ce qui me fait penser à https localhost: 3000 requêtes ne passent jamais par Apache et vont directement à mongrel qui ne peut pas gérer ssl. Apache fonctionne parce que si je vais à http://localhost
, je reçois la page Web par défaut "It Works". Je suis assez sûr que les certificats auto-signés que j'ai créés sont également très bien car aller à https://localhost
fait apparaître la page dans firefox demandant si vous faites confiance au site et me permet également de voir les détails du certificat. J'ai fait un tas de googling et j'ai lu et essayé un tas de guides, mais beaucoup d'entre eux ont quelques années et peut-être périmé.
J'ai fini par désinstaller apache2 et ensuite réinstaller en suivant ce guide ubuntu https://help.ubuntu.com/10.04/serverguide/C/httpd.html Il a une section sur la configuration https que j'ai faite et il crée ce fichier ->/etc/apache2/site-available/default-ssl. On dirait que cette
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
# Used by Rails. Mentioned in all the Rails SSL tutorials.
RequestHeader set X_FORWARDED_PROTO "https"
</VirtualHost>
</IfModule>
Tout ce que je modifié là est le certificat et les lieux clés, fait il <VirtualHost *:443>
au lieu de <VirtualHost _default_:443>
et a ajouté le RequestHeader mis X_FORWARDED_PROTO ligne « https » à la fin que tous les guides dit de faire. Je ne suis pas sûr de ce qu'il y a d'autre à changer. À un moment donné, j'ai essayé de placer DocumentRoot dans le dossier public de mon application rails, mais cela n'a pas fait de différence.
Apache redémarre correctement et il n'y a pas d'erreur dans le journal.
Je suis sûr que je dois être vraiment proche de l'avoir fonctionné mais j'ai passé beaucoup d'heures pendant plusieurs jours et je ne peux pas le comprendre. Ma meilleure supposition est que j'ai quelque chose de faux ou de manquant dans le fichier de configuration apache ci-dessus.
Mes questions sont les suivantes:
- Comment puis-je savoir si les demandes vont effectivement par apache?
- Si ce n'est pas la raison pour laquelle la requête https ssl passe par mongrel et n'est pas gérée par apache?
- Que dois-je faire pour que cela fonctionne?