[{"data":1,"prerenderedAt":297},["ShallowReactive",2],{"project-15135552":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":33,"aspects":34,"strip":41,"post_text":43,"what":44,"said":69,"maker_in_thread":152,"shape":165,"grid":170,"attempts":258,"same_week":259,"maker_shows":225,"maker_hidden":289,"reader_version":290,"card":291},"15135552","Fly","An API to provision custom hostnames with SSL","title","Show HN: An API to provision custom hostnames with SSL",null,"mrkurt",1504123819,2017,90,35,501,2242,23,"notable","infrastructure","hosting and ssl provisioning","api",[23,24,25,26],"custom hostnames","ssl certificates","lets encrypt","custom domains","curious",-0.1,{"positive":30,"neutral":31,"mixed":30,"critical":32},1,13,3,18,{"execution":35,"privacy":37,"idea":38,"docs":39,"design":40},{"positive":36,"critical":30},0,{"positive":36,"critical":30},{"positive":30,"critical":30},{"positive":36,"critical":36},{"positive":36,"critical":36},[30,36,32,36,30,36,36,32,32,32,32,36,30,32,42,36,32,36,32,32,36,36,36,36,32,36,32,32,36,36,32,36,32,36,36],5,"We launched an API for custom hostnames today. A simple HTTP post with a hostname gets a temp hostname with CNAME\u002Fa record instructions, as soon as DNS is setup we issue SSL and start accepting traffic for that hostname. It's the quickest way we know of to provision custom hostnames: https:\u002F\u002Ffly.io\u002Fmix\u002Fcustom-hostnames\u002F\n\nWhen we started building Fly, we figured it was too late to \"make SSL easy and the customers will come\". Lets Encrypt changed the world, and we knew many companies rolling their own SSL support with nginx, Traefik, etc, etc. It seemed like a solved problem.\n\nIt turns out that ",{"problem":45,"audience":51,"pricing":55,"motivation":61,"time_to_build":9,"stack":65,"openness":66,"stage":67,"team_size":68},{"value":46,"source":47,"evidence":48},"Provisioning custom hostnames with SSL for many customer domains is hard and distracting","maker",[49],{"id":50},"post",{"value":52,"source":47,"evidence":53},"Companies hosting apps or content on behalf of their own customers",[54],{"id":50},{"value":56,"source":47,"evidence":57},"Free tier with metered pricing",[58],{"id":59,"by":10,"text":60},"15136355","It's superficially similar. The most obvious difference is that you need a CloudFlare Enterprise plan to do that stuff, and we have a free tier + easy metered pricing. You can…",{"value":62,"source":47,"evidence":63},"SSL is still a pain for companies hosting many hostnames, so they built a solution",[64],{"id":50},[],"unknown","launched","company",{"praise":70,"objections":86,"requests":103,"questions":114,"alternatives":133},[71,79],{"value":72,"source":73,"evidence":74},"Useful solution for custom domains needed by SaaS customers","commenter",[75],{"id":76,"by":77,"text":78},"15136176","stevoski","Timely. I launched a SaaS a few months ago and have found early customers have expected custom domain names with SSL. It seems that not offering this is a deal breaker these…",{"value":80,"source":73,"evidence":81},"Simple setup compared to alternatives",[82],{"id":83,"by":84,"text":85},"15136206","Gys","I am trying to understand what you offer, compared to AWS. Does it kind of substitute the combination of API Gateway + CloudFront + Certificate Manager ? I have some Lambda funcs…",[87,95],{"value":88,"source":73,"evidence":89},"Signup asks for AWS secret keys without clear explanation",[90,91],{"id":76,"by":77,"text":78},{"id":92,"by":93,"text":94},"15136762","subway","You don't need AWS keys at all. This enrollment flow flies in the face of best practices. Intead, you should be providing your users with instructions to create an IAM role for…",{"value":96,"source":73,"evidence":97},"Asking for IAM user secrets is poor security practice",[98,99],{"id":92,"by":93,"text":94},{"id":100,"by":101,"text":102},"15137472","samstave","DING DING DING The problem is that a junior level of exposure may result in access+secrets being mistakenly given out. Yeah - they should be looking into say, cloudability, or…",[104,108],{"value":105,"source":73,"evidence":106},"Support for AWS Elastic Beanstalk and EC2 in onboarding",[107],{"id":76,"by":77,"text":78},{"value":109,"source":73,"evidence":110},"Clearer documentation comparing to AWS services",[111],{"id":112,"by":84,"text":113},"15136475","Ok thanks. Might be good to mention comparable AWS services (and maybe others) in your faq. Its only because of this being on HN that I gave it more then a few seconds of…",[115,126],{"value":116,"source":73,"evidence":117},"How are hostname ownership and Let's Encrypt rate limits handled",[118,122],{"id":119,"by":120,"text":121},"15136983","andrewbarba","I may have missed this in the docs, but how are you verifying that someone owns the hostname they are trying to create a cert for? Do you need to cname the hostname to a fly…",{"id":123,"by":124,"text":125},"15136016","RKearney","How do you work around the rate limits imposed by Let's Encrypt? https:\u002F\u002Fletsencrypt.org\u002Fdocs\u002Frate-limits\u002F If you're getting certificates issued for subdomains of your domain,…",{"value":127,"source":73,"evidence":128},"Whether it works with App Engine",[129],{"id":130,"by":131,"text":132},"15139194","type0","Would there be a way to get it to work with App Engine?",[134,141,145],{"value":135,"source":73,"evidence":136},"Cloudflare Enterprise SaaS offering",[137],{"id":138,"by":139,"text":140},"15136268","bosdev","Can you help me understand how this is different than Cloudflare's offering [1]? 1- https:\u002F\u002Fwww.cloudflare.com\u002Flp\u002Fsector\u002Fsaas\u002F",{"value":142,"source":73,"evidence":143},"AWS API Gateway, CloudFront and Certificate Manager",[144],{"id":83,"by":84,"text":85},{"value":146,"source":73,"evidence":147},"Wildcard certificates with wildcard CNAME",[148],{"id":149,"by":150,"text":151},"15135823","tom169","I'm not sure how this is easier than a wildcard certificate and a wildcard CNAME...",{"comments":153,"answered":154,"key":155},9,7,[156,159,162],{"id":157,"text":158},"15136377","Send me an email and I'll help (kurt@fly.io, or support@fly.io)! We've been working on improving the onboarding flow for new apps, but it's definitely complicated. Elastic…",{"id":160,"text":161},"15136597","Yeah agreed. We should make that explicit, or even give people a CloudFormation template to set up a restricted policy. And to be clear, we don't need s3 access unless you want…",{"id":163,"text":164},"15135839","It's not, it's meant for cases where people need entirely different custom hostnames. Subdomains are quick and easy, but people have become quite a bit more demanding about how…",{"commenters":166,"max_depth":167,"maker_replies":153,"first_comment_mins":168,"lifespan_hours":169},21,4,32,73,[171,173,175,178,179,181,185,186,188,190,193,196,197,201,204,207,210,211,213,216,220,223,228,231,233,234,236,237,239,243,245,249,251,253,256],[76,36,30,172,77,36],"project\u002Fcritical\u002Fexecution",[157,36,36,174,10,30],"maker\u002Fneutral\u002Fprivacy",[176,36,32,174,177,36],"15136466","theossuary",[160,36,36,174,10,30],[92,36,30,180,93,36],"project\u002Fcritical\u002Fprivacy",[182,36,36,183,184,36],"15137389","commenter\u002Fneutral\u002Fprivacy","schlarpc",[100,36,36,183,101,36],[119,30,32,187,120,36],"project\u002Fneutral\u002Fexecution",[189,30,32,187,120,36],"15136994",[191,30,32,187,192,36],"15137071","goodroot",[149,194,32,195,150,36],2,"project\u002Fneutral\u002Fidea",[163,194,36,195,10,30],[198,194,30,199,200,36],"15139218","project\u002Fcritical\u002Fidea","askz",[202,194,32,195,203,36],"15141740","matahwoosh",[205,32,42,206,131,36],"15139230","project\u002Fpositive\u002Fidea",[208,32,36,209,10,30],"15142281","project\u002Fneutral\u002Fnone",[138,167,32,195,139,36],[59,167,36,212,10,30],"project\u002Fneutral\u002Fpricing",[214,167,32,215,101,36],"15137511","project\u002Fneutral\u002Fdocs",[217,42,32,218,219,36],"15138454","project\u002Fneutral\u002Fdesign","bradgessler",[221,42,36,222,203,36],"15138657","other\u002Fneutral\u002Fnone",[224,225,36,226,227,36],"15138223",6,"other\u002Fneutral\u002Fidea","firekebab",[229,225,36,222,230,36],"15147947","le-mark",[232,225,36,222,227,36],"15158330",[83,154,32,195,84,36],[235,154,36,212,10,30],"15136306",[112,154,32,215,84,36],[123,238,32,187,124,36],8,[240,238,36,241,242,36],"15136102","commenter\u002Fneutral\u002Fexecution","pfg",[244,238,36,187,10,30],"15136179",[246,153,32,247,248,36],"15139758","project\u002Fmixed\u002Fexecution","corobo",[250,153,36,187,10,30],"15142262",[130,252,32,195,131,36],10,[254,252,36,222,255,36],"15139612","hatstand",[257,252,36,209,10,30],"15142291",[],[260,265,269,274,279,284],{"id":261,"name":262,"points":263,"category":264},"15105726","Moon",268,"languages",{"id":266,"name":267,"points":268,"category":19},"15115318","OpenFaaS",194,{"id":270,"name":271,"points":272,"category":273},"15123638","MMRA",193,"productivity",{"id":275,"name":276,"points":277,"category":278},"15117037","bitcoin-trading-dca",170,"finance_crypto",{"id":280,"name":281,"points":282,"category":283},"15131408","Logo Rank",152,"ai",{"id":285,"name":286,"points":287,"category":288},"15105304","DomDB",131,"web_saas",false,"v2",{"id":292,"name":5,"line":6,"ai":289,"cat":19,"year":12,"points":13,"comments":14,"rec":27,"s":28,"top":17,"kw":293,"maker":10,"domain":294,"tier":18,"attempts":36,"strip":295,"url":-1,"mix":296,"praise":72,"objection":88,"sub":20},15135552,[23,24,25,26],"","10301003333013503033000030330030300",[30,31,30,32],1794036558524]