use*_*249 5 https clojure compojure ring
我正在使用Clojure(ring和compojure)来构建一个Web应用程序,我不知道从哪里开始使用https.我有一个需要保护的注册和登录,然后一旦他们通过身份验证,他们就需要保持https状态.
我似乎找不到一个关于一般设置https或专门设置clojure应用程序的好教程.
我找到了这个答案:如何在ring/compojure中启用https和http-> https重定向
这是否意味着我可以编写我的compojure应用程序,好像没有https并且让nginx坐在前面并为我处理所有这些事情?
反向代理方法似乎是最常见的选择。然而,作为一个“实验”,我研究了只使用戒指、码头组合等和 https。没那么难。
首先,您需要使用 keytool 生成自签名证书并将其安装到新的密钥库中。keytool 文档非常好,可以引导您完成此过程。请注意,如果您使用自签名证书,则需要对大多数浏览器添加例外规则,以表明您信任该证书。
将创建的密钥库文件复制到项目树的根目录中
更新 jetty 配置参数以指定 ssl、ssl-port、密钥库文件和密钥库密码。
将 ring/ring-defaults 包添加到您的 project.clj
添加带有 secure-site-defaults 配置选项的 wrap-defaults 中间件以强制 https 连接,即将 http 连接重定向到 https。
这不是我推荐用于生产的设置,但我发现它比在进行开发等时还必须配置 ngix 更简单。最难的部分是完成 keytool 过程。但是,只要遵循文档和示例就足够了,前提是您不会让您自己被所有选项淹没 - 保持简单。
就像是
keytool -genkeypair \
-keystore $SSL_DIR/$KS_NAME \
-keypass $PASSWORD \
-storepass $PASSWORD \
-keyalg RSA -keysize 2048 \
-alias root \
-ext bc:c \
-dname "$ROOT_CN"
echo "CA Key"
keytool -genkeypair \
-keystore $SSL_DIR/$KS_NAME \
-alias ca \
-ext bc:c \
-keypass $PASSWORD \
-keyalg RSA -keysize 2048 \
-storepass $PASSWORD \
-dname "$CA_CN"
echo "Server Key"
keytool -genkeypair \
-keystore $SSL_DIR/$KS_NAME \
-alias server \
-keypass $PASSWORD \
-storepass $PASSWORD \
-keyalg RSA -keysize 2048 \
-dname "$SERVER_CN"
echo "Root Cert"
keytool -keystore $SSL_DIR/$KS_NAME \
-storepass $PASSWORD \
-alias root \
-exportcert \
-rfc > $SSL_DIR/root.pem
echo "CA Cert"
keytool -storepass $PASSWORD \
-keystore $SSL_DIR/$KS_NAME \
-certreq \
-alias ca | keytool -storepass $PASSWORD \
-keystore $SSL_DIR/$KS_NAME \
-gencert \
-alias root \
-ext BC=0 \
-rfc > $SSL_DIR/ca.pem
echo "Import CA cert"
keytool -keystore $SSL_DIR/$KS_NAME \
-storepass $PASSWORD \
-importcert \
-alias ca \
-file $SSL_DIR/ca.pem
echo "Server Cert"
keytool -storepass $PASSWORD \
-keystore $SSL_DIR/$KS_NAME \
-certreq \
-alias server | keytool -storepass $PASSWORD \
-keystore $SSL_DIR/$KS_NAME \
-gencert \
-alias ca \
-rfc > $SSL_DIR/server.pem
echo "Import Server Cert"
cat $SSL_DIR/root.pem $SSL_DIR/ca.pem $SSL_DIR/server.pem | \
keytool -keystore $SSL_DIR/$KS_NAME \
-storepass $PASSWORD \
-keypass $PASSWORD \
-importcert \
-alias server
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |