我正在使用课程证书,但学生无法下载证书。证书下载按钮显示在仪表板上,但链接看起来像
http://localhost:18090/downloads/e3a9bbf9353743e994df6863467cfcca/Certificate.pdf
显然,我无法下载证书,甚至将地址更改为我的服务器,我无法让它工作。
我可以在哪里修改它以便下载证书?
PS:如果我导航到路径/edx/var/certs/www-data/downloads/e3a9bbf9353743e994df6863467cfcca/Certificate.pdf我可以看到该学生的证书是正确生成的。
谢谢!
答案 0 :(得分:1)
默认情况下,证书下载URL没有身份验证。在最新版本的open-edx中,有一个默认的nginx配置应该可以工作:
server {
listen 18090 default_server;
location / {
root /edx/var/certs/www-data;
satisfy any;
allow 127.0.0.1;
deny all;
auth_basic "Restricted";
auth_basic_user_file /edx/app/nginx/nginx.htpasswd;
index index.html
proxy_set_header X-Forwarded-Proto https;
try_files $uri $uri/valid.html =404;
}
}
检查以确保您在/edx/app/nginx/sites-enabled
中拥有此nginx配置文件,并且您没有任何防止您在该端口上连接的防火墙规则。
答案 1 :(得分:0)
您是从自己的机器下载的吗? http://localhost:18090
在您自己的计算机上是18090端口。 (我想你注意到了这一点。)
现在,edX上的实际链接指向服务器,然后该服务器指向验证服务器(当光标位于“下载”按钮上时,您可以看到)。当然,edX不允许您立即下载证书 - 如果您想以编程方式执行此操作,则必须遵循程序中的身份验证协议。
另一方面,您只标记了'edx'标记,但这并不能说明您真正想要做什么。
答案 2 :(得分:0)
下载网址包含http://localhost:18090的原因是因为它是为定义的证书生成流程here定义的默认值。
我可以在哪里修改它以便下载证书?
您需要重新定义和覆盖值CERT_DOWNLOAD_URL,以满足您在/ edx / app / edx_ansible /中的server-vars.yml文件中/或/ edx / app / certs /中的env.json文件中的需求关于如何定义构建过程。
如果更改server-vars.yml,则需要运行以下命令来编译/生成资源(包括env.json)并重新启动certs进程:
sudo /edx/bin/update read-only-certificate-code <your-release e.g. named-release/birch>
如果更改env.json,则需要运行以下命令重新启动证书过程:
sudo -u www-data /edx/bin/supervisorctl -c /edx/app/supervisor/supervisord.conf restart certs
除了CERT_DOWNLOAD_URL之外,还需要设置其他变量以自定义您的环境,例如CERT_VERIFY_URL。
Open edX一般性讨论区上与此相关的另一个好资源是here。它描述了使用S3作为证书的存储库,并影响您将用于CERT_DOWNLOAD_URL的值。