Я в настоящее время внедряю Reddit OAuth2 для входа в мое веб-приложение. Рукопожатие и маркер обмен работает нормально при проверке на месте, но при запуске на сервере (размещено на DIY картриджа «OpenShift») я получаю следующее сообщение об ошибке:Java SSL DH Keypair Generation - Prime Size Error
java.security.InvalidAlgorithmParameterException: Prime size must be
multiple of 64, and can only range from 512 to 1024 (inclusive)
Что приводит
java.lang.RuntimeException: Could not generate DH keypair
I мы искали большую часть дня и находили различные решения, начиная от изменения версии Java и заканчивая использованием BouncyCastle. Тем не менее, я использую библиотеку Scribe, поэтому я не думаю, что могу реализовать BouncyCastle без наложения и изменения базы писца, какой вид поражения это цель.
Установка JCE Unlimited Strength также появилась, но я не могу этого сделать на OpenShift, так как нет доступа root (возможно, она сможет заставить одну из их команды сделать это).
В версии Java в пользе (взяты из java -version
):
локального тестирования машины:
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-1ubuntu1)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
OpenShift Сервер:
java version "1.7.0_51"
OpenJDK Runtime Environment (rhel-2.4.4.1.el6_5-i386 u51-b02)
OpenJDK Server VM (build 24.45-b08, mixed mode)
Я в недоумении относительно того, что Я могу это сделать. Надеюсь, я глуп или что-то не понимаю, поэтому любые возможные решения были бы замечательными!
-
EDIT 1
Запрос код, который возвращает ошибку (используя Scribe, как я уже говорил, так что не может быть много пользы). Конечная точка маркера равна https://ssl.reddit.com/api/v1/access_token
с использованием POST. Как я сказал выше, это работает на моей тестовой машине.
OAuthRequest request = new OAuthRequest(getAccessTokenVerb(), getAccessTokenEndpoint());
request.addHeader("Authorization", "Basic"
+Base64.encode((config.getApiKey()+":"+config.getApiSecret()).getBytes()));
request.addBodyParameter("state", "none");
request.addBodyParameter(OAuthConstants.SCOPE, config.getScope());
request.addBodyParameter(OAuthConstants.CLIENT_ID, config.getApiKey());
request.addBodyParameter(OAuthConstants.REDIRECT_URI, config.getCallback());
request.addBodyParameter(OAuthConstants.CODE, verifier.getValue());
request.addBodyParameter("grant_type", "authorization_code");
Response response = request.send(); // Errors here from Request.createConnection in the Scribe code
return getAccessTokenExtractor().extract(response.getBody());
Можете ли вы опубликовать код, который вы используете для создания ключевой пары, чтобы мы могли с ней проверить? –
См. Также http://stackoverflow.com/questions/6851461/java-why-does-ssl-handshake-give-could-not-generate-dh-keypair-exception – Raedwald