10
votes

Est-ce que les rails Postgres Adapter support SSL?

J'essaie de configurer une application Rails pour vous connecter à distance à un DB Postgres. J'ai remarqué que les adaptateurs de connexion pour MySQL ont des options qui spécifient les informations requises pour la configuration d'une connexion SSL, mais il n'y a pas d'options équivalentes pour l'adaptateur Postgres / PG.

Après googling autour, je n'ai pas été capable de trouver quoi que ce soit (seulement se connecter via un tunnel SSH).

Alors simplement, c'est essayer d'obtenir l'adaptateur Postgres Rails pour se connecter sur SSL une impasse?

merci. Toute aide ou direction est appréciée.

-h


0 commentaires

5 Réponses :


1
votes

lire l'API de RubyonRails de la postgretsqladapter Je répondrais simplement à votre question sans http://api.rubyonRails.org/classes/acterecord/connectiondapters/postgresqladapter. HTML

mais: il existe trois gemmes de PostgreSQL différents: P>

  1. Postgres (écrit en C, discontinué) Li>
  2. pg (écrit en C, mieux entretenu) li>
  3. Postgres-PR (implémentation pure rubis, maintenue active) li> ol>

    Le gemme "PG" semble autoriser la connexion SSL (au moins lors de la prise de vue des sources). Cela semble être documenté nulle part, mais on dirait que cela fonctionne (Redmine le confirme ici: http: // www.redmin.org/wiki/1/redmineInstall ). p>

    Je suggère que vous souhaitiez peut-être jeter un oeil sur la manière dont la base de données.yml est configurée avec MySQL et essayez aussi le gemme PG. Assurez-vous également que vous avez compilé PostgreSQL avec SSL Support. Voir http: //www.williambharding. COM / Blog / Rails / Guide-to-Setup-Rails-with-mysql-ssl / p>

    Si tout ne fonctionne pas, vous pouvez peut-être essayer de corriger la connexion de la base de données de rails et ajouter connacement_parameters à la connexion SSL. Voici les informations de la source de Ruby-PG: P>

    <var>sslmode=mode</var> : how to treat SSL(string) (one of disable, allow, prefer, require)
    


0 commentaires

4
votes

fin 2012, les choses semblent avoir changé. Bien que la documentation soit encore rare, le gemme PG semble négocier automatiquement SSL, et les pilotes JDBC peuvent être contraints d'utiliser SSL.

Mon application est une application Hybrid MRI-JRuby, qui accède à Heroku-Postgresql, un serveur Cloud PostgreSQL, un serveur Cloud PostgreSQL. Cela nécessite SSL. P>

# jruby database.yml
production:
  adapter: jdbcpostgresql
  url: jdbc:postgresql://host/database?user=user&password=password&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory


2 commentaires

Accrochez-vous, vous utilisez PGJDBC avec des rails? Est-ce que cela fonctionne du tout si vous n'êtes pas sur Jruby?


J'utilise les deux. IRM Ruby pour le site Web sur Heroku et Jruby pour les travailleurs sous Windows. L'IRM PG GEM Auto-négocie SSL, JDBC-Postgres devait être obligé d'utiliser SSL. Heroku réécrit la base de données.yml, donc je mets la configuration de la production Jruby dans ma répétition et laissez Heroku faire sa chose.



1
votes

Je suis venu à cela après avoir examiné la même question que l'OP et n'était pas très satisfait de l'une des réponses, car j'utilise également le gemme PG et c'est le seul à être suffisamment pris en charge pour les rails 2.x.

Après une enquête sur mon collègue, il a réalisé ce qu'il a réalisé: p>

dans Rails 4, vous pouvez simplement spécifier une hachage de variables pour le faire ( http://api.rubyonRails.org/classes/actieCord/connectiondapters/postgresqladapter.html ) mais ça n'existe pas dans Rails 2 ( http://api.rubyonRails.org/v2. 3.8 / Classes / ActiveRecord / Connectadadapters / PostgreSqLadapter.html ) P>

Pour ce faire, nous pouvons simplement supprimer la configuration typique et tout mélanger dans l'argument de la base de données et l'appeler un jour (beaucoup comme l'original Réponse Whitehat101 Publié avec l'adaptateur JDBC) P>

ci-dessous est la mise en œuvre que vous utiliseriez pour vous connecter à un serveur distant et utilisez le SSLMODE souhaité. P>

development:
    adapter: postgresql
    database: "host=db-serv dbname=admin_production user=XX password=XX sslmode=verify-ca"


0 commentaires

2
votes

Réponse pour les rails 4 Utilisation de Jruby

J'utilise des rails 4 avec Jruby 1.7.8 (1.9.3P392) et Activerecord-jdbcostgresql-adaptateur 1.3.4 P>

Cette solution permettra à vos rails Application Pour se connecter à un serveur PostgreSQL à l'aide de SSL. Dans cette solution, j'utilise une "non-réalidationfactory" qui ne doit être utilisée que pour les tests. Pour configurer en toute sécurité pour la production, vous devriez configurer une critère, qui va au-delà de mon expérience jusqu'à présent. P>

Étapes pour configurer Postgres SSL H2>

Ajouter un gemme à gemfile p>

development:

    adapter: postgresql
    encoding: unicode
    database: SSL_Test
    pool: 5
    timeout: 5000
    username: postgres
    password: YourPassword!
    sslmode: require
    properties: { sslfactory: 'org.postgresql.ssl.NonValidatingFactory' }
    host: www.example.com
    port: 5432

0 commentaires

1
votes

rails <3.2 ne passera pas réellement la base de données.yml SSL des configurations sur le gemme PG. J'espère que ma douleur vous sauve des heures de débogage.


0 commentaires